Hoe een unieke combinatie van twee kolommen te behouden bij het invoegen van gegevens in de derde kolom?

Ik heb drie kolommen in mysql-tabel: tax_id, company_name, store_name. Ik wil dat tax_id en bedrijfsnaam een ​​unieke combinatie zijn en dat tax_id of bedrijfsnaam niet afzonderlijk kan bestaan ​​in combinatie met een andere bedrijfsnaam of een tax_id. Een ander ding is dat ik de namen van de derde kolom van verschillende (alle) winkels moet vermelden die het bedrijf heeft. Voorbeeld van tabel moet zijn:

tax_id| company_name| store_name
1324  | Kmart       | 1st ave
1324  | Kmart       | broadway
1324  | Kmart       | 5th ave
7725  | DM          | shop 1
7725  | DM          | shop 2
7725  | DM          | shop 7
etc...

Het gebruik van tax_id met een ander bedrijf is verboden of het gebruik van company_name met verschillende tax_id is verboden. Alle hulp is welkom, ook voor elk codevoorbeeld.

1

2 antwoord

Ik zou 2 tabellen gebruiken:

  • bedrijven
  • slaat

Bedrijven bevatten tax_id en bedrijfsnaam. Winkels bevatten tax_id als een foreign-key en store_name.

Vervolgens kunt u tax_id en company_name unique en tax_id primary maken

1
toegevoegd

Aangezien uw tax_id en bedrijfsnaam één-op-één zijn toegewezen, is het raadzaam uw database te normaliseren. Verplaats tax_id naar bedrijfsnaamtoewijzing naar een andere tabel en behoud bedrijfsnaam of tax_id in de huidige tabel. U kunt JOIN gebruiken om alle gewenste informatie eruit te persen.

Als u uw db-structuur niet kunt wijzigen, moet u de database opvragen of de bedrijfsnaam een ​​tax_id heeft en vervolgens de volgende informatie gebruiken voor de invoegquery.

For more information look at database normalization

1
toegevoegd
kun je je eerste optie illustreren met een voorbeeld
toegevoegd de auteur mdakic, de bron