sql >> Databasteknik >  >> RDS >> Mysql

databasdesign, gör en tabell för att peka flera och någon form av rekursiva pekare

Detta är ett potentiellt stort databasschema, så jag kommer bara att fokusera på muskuloskeletala systemet. Innan jag går in på det bör jag dock nämna vikten av databasnormalisering. Det är viktigt! Och av många anledningar. Främst, genom att designa en bra, normaliserad databas nu sparar du dig själv problem på vägen samtidigt som du säkerställer integriteten och tillförlitligheten hos dina data. Ha alltid i bakhuvudet "Hur kommer den här databasen att växa", "Tänk om jag behöver lägga till fler system eller vyer eller distributionsmönster", etc. Gör dig själv, en din arbetsgivare, en tjänst och läs vidare i. A kort översikt kan läsas här:http://databases.about.com/ od/specificproducts/a/normalization.htm

Till databasdesignen:

Du vill hålla redundanta kolumner och kolumner som är delmängder av andra kolumner borta från en tabell och in i sin egen. Titta till exempel på din lymfkörteltabell. Vad händer om du om ett år inser att du behöver lägga till ytterligare en lymfkörtel? Eller ta bort en? Eller vad händer om du bara tittar på en nod från en klient? Istället för att göra det på ditt sätt, bind bordet till ett större föremål (Im inte en läkare så jag är inte säker på vad anser är) som patient eller lymfsystem. Eller båda. Exempel:

En patient har många system (ett till många förhållande mellan patienttabell och systemtabell) Ett lymfsystem har många organ (ett till många förhållande mellan lymfsystemet och organ) Ett system eller organ har många test (ett till många förhållande mellan system och tester).

Exempel:

Denna tabell bör endast innehålla data som hänför sig till en enskild patient

Den här tabellen bör endast ha kolumner som är specifika för alla system. System kan vara lymfsystem, andningssystem, utsöndringssystem, etc.

TablePatient_TableSystems

Du kan inte ha många till många relationer. Den här tabellen löser det. Om du inte hade detta skulle du behöva föra redundanta register i varje tabell för varje patient/system

Löser många till många för system och organ

Nu till tester. Är test specifika för organ eller system? Eller båda? Det här exemplet säger både och

TableTest

Det finns mycket här, så jag tror att det här är ett bra ställe att stanna till. Läs igenom datanormaliseringen och när du har frågor, posta tillbaka här (eller skicka ett meddelande till mig).



  1. välj fråga i viloläge med where-sats

  2. Varför saktar en liten förändring i söktermen ner frågan så mycket?

  3. Skillnadssynlighet i subquery join och var

  4. Vad är det korrekta sättet att använda distinct på (Postgres) med SqlAlchemy?