Domanda

Sono un po 'confuso nel creare un buon database relazionale. Sto usando PhpMyAdmin per creare un database. Ho le seguenti quattro tabelle. Non preoccuparti di questo luogo di fatto e il prezzo sono opzionali.

  1. Persona (obbligatorio)
  2. Articolo (obbligatorio)
  3. Luogo (opzionale)
  4. Prezzo (opzionale)

L'elemento è la tabella principale. Avrà sempre una persona collegata. * So che fai unito a Mysql per i tavoli. Se voglio collegare insieme le tabelle, potrei usare i tasti compositi (usando gli ID da ogni tabella), tuttavia è il modo più corretto per collegare le tabelle? Significa anche che l'oggetto avrà 5 ID inclusi i propri. Tutto ciò causa valori null (apparentemente un no grande no, che posso capire) perché se il luogo e il prezzo sono opzionali e non sono usati su una voce nella tabella degli articoli avrò un valore nullo lì. Per favore aiuto!

Grazie in anticipo. Spero che questo abbia senso.

È stato utile?

Soluzione

Valori nulli

Significa anche che l'oggetto avrà 5 ID inclusi i propri. Tutto questo causa valori null (apparentemente un no grande no, che posso capire) perché se il luogo e il prezzo sono opzionali e non sono usati su una voce nella tabella degli articoli avrò un valore null lì

Personalmente penso che questa sia una situazione in cui NULL I valori sono perfetti e certamente non avrei dubbi sul metterlo nel mio design del database.

Un modo in cui ho visto altri raggiungere la stessa cosa senza NULL Valori è quello di creare un record nelle tabelle opzionali (luogo e prezzo nel tuo esempio) con un ID di 0 che significa che non esiste un record correlato - ma questo rende 10 volte più lavoro per lo sviluppatore dell'applicazione per filtrare questi record - È molto più facile fare un join e se non ricevi alcun record, non ci sono record correlati nella tabella opzionale.

Ricorda solo di fare un LEFT o RIGHT OUTER Unisciti se vuoi tornare Items indipendentemente dal fatto che abbiano un Place o Price Associato (otterrai NULL valori nelle colonne della tabella opzionali per Items che non hanno record associati) e un INNER Unisciti se te solo voglio il Items that fare avere un record opzionale associato.

Tasti compositi

Una chiave composita è una chiave in una tabella composta da più di una colonna. Se ognuno dei tuoi Person, Item, Place e Price Tutti hanno un ID (anche se è solo un numero di incrementazione automatica) non avrai bisogno di una chiave composita - solo una colonna chiave primaria in ogni tabella e una colonna di chiave esterna in Item Tabella per ogni tabella correlata - EG item_id, person_id, place_id, price_id. Lo affermi Item ha il suo ID, quindi non dovresti aver bisogno di una chiave composita, solo una chiave primaria su item_id colonna.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top