Data model

teams name roles label status order teamId → teams ensemble_roles name order ensembleId → ensembles roleId → roles ensembles label status product_ensembles order productId → products ensembleId → ensembles products label status category slug entertainmentProductId → products prices label amount status productId → products venues name city loadInNotes gigs label status gigType date startTime guestCount venueId → venues bandLeaderId → staff_members coordinatorId → staff_members gig_products label status startTime endTime negotiatedPrice gigId → gigs ensembleId → ensembles productId → products gig_roles label callTime computedTotalAmount roleId → roles gigId → gigs staffMemberId → staff_members gigProductId → gig_products rateId → rates latestInvitationId → gig_role_invitations gig_role_invitations invitationNumber invitedAt response gigRoleId → gig_roles staffMemberId → staff_members gig_contacts roles gigId → gigs contactId → contacts staff_members fullName status email basePay staff_member_roles status callOrder roleId → roles staffMemberId → staff_members staff_member_blockouts startDate endDate reason staffMemberId → staff_members rates label amount status staffMemberId → staff_members productId → products staff_member_product_rates standaloneAmount addonAmount saturdayModifier staffMemberId → staff_members productId → products contacts fullName email phone many → one (the foot sits on the table holding the foreign key) gigs — the table everything hangs off