Progettazione del database: regole per studenti e gruppi di studenti

1

Sono nuovo nei database. Sto usando MySql.

Quello che ho è un sistema per studenti che memorizza le regole per gli studenti di una scuola.

Ogni studente può o meno far parte di un gruppo (Calcio, Chitarra, ecc.)

Regole diverse sono imposte ai singoli studenti e anche ai gruppi.

Tabella studenti:

|Student_id|Student_name|
|----------|------------|
|         1|Jack        |
|         2|John        |
|         3|Bob         |
|----------|------------|

Tabella dei gruppi:

|Group_id|Group_name|
|--------|----------|
|       1|Soccer    |
|--------|----------|

Student_group_table:

|Student_id|Group_id|
|----------|--------|
|         1|       1|   --Jack plays soccer
|         2|       1|   --John also plays soccer
|----------|--------|   

Regole (design sporco):

|id|entity_id|entity_type|rule      |
|--|---------|-----------|----------|
| 1|        3|student    |Bus at 7am| --Bob has to catch bus at 7am
| 2|        1|group      |Shoes     | --All soccer students must bring shoes
|--|---------|-----------|----------|

Gradirei un'alternativa più pulita a questo sporco design.

    
posta user3215614 20.07.2015 - 16:01
fonte

1 risposta

4

Un'alternativa al commento di @Thomas (che è fattibile, anche se le chiavi esterne ricorsive imo aggiungono troppa complessità se non hai bisogno della potenza aggiuntiva che danno) sarebbe di creare tabelle separate per ogni tipo di chiave esterna (una per gli studenti , uno per gruppi), consentendo chiavi esterne applicabili:

Regole:

|id|rule      |
|--|----------|
| 1|Bus at 7am| -- bus has to be caught at 7am
| 2|Shoes     | -- shoes have to be brought
|--|----------|

student_rules_table:

|Student_id|rule_id |
|----------|--------|
|         3|       1| --Bob has to follow rule 1
|----------|--------|   

group_rules_table:

|Group_id  |rule_id |
|----------|--------|
|         1|       2| --All soccer students have to follow rule 2
|----------|--------|

Ciò comporterebbe anche un numero inferiore di regole distinte, poiché queste non dipendono più da alcuna entità connessa.

    
risposta data 20.07.2015 - 17:02
fonte

Leggi altre domande sui tag