Segítségre van szüksége a MySQL tábla kapcsolatban kialakítás

szavazat
0

Hozok létre webes alkalmazás barátom, a tanár iskolai rendszerben. Most érzem magam problémája tervezésével táblázatban tárolja a tanár rekordot. Itt látható a forgatókönyv ...

1. Meg kell teremtenünk során először
2. Ezután adjunk hozzá egy tanár, hogy természetesen (Tegyük fel, hogy mi már tanár rekord tárolt tanár táblázat), minden természetesen lehet több, mint egy tanár, és minden tanár tanítani több mint egy tanfolyam.
3. Everytime tanár jött tanítani, mi tartja nyilván. Minden tanár tanít a tanfolyam többször.
4. Az a hónap végéig, akkor húzza az összes tanítás rekordot, és kiszámítja a pénzt meg kell fizetni

Ez az én jelenlegi táblák

// Course Table
course_id (PK)
...
...

// Teacher Table
teacher_id (PK)
...
...

// Course_teacher
course_id (FK: course.course_id)
teacher_id (FK: teacher.teacher_id)

A gond az, hogy nem lehet hozzáadni díjat a course_teacher asztalra, mert az első pillanatban hozzáteszem tanár ezt az utat, nincs tanítás történt meg. Ha hozzá oszlop „díj” és a „dátum”, hogy ezt a táblázatot, az adatok olyan lesz, mint ...

1,1, null, null (Ezt a rekordot hozzáadni, mielőtt a tanfolyam indul, ami nem tetszik, amelynek null mező (k))
1,1,50,2011-06-12 (Ez a rekord hozzá az első alkalommal tanár az oktatás)
1,1,50,2011-06-19 (Ez a rekord hozzá a második alkalommal tanár tanít)
...

gondolkodtam hozzá még egy asztal, mint

//Teaching_fee
course_id (FK: course.course_id)
teacher_id (FK: teacher.teacher_id)
fee
paid_status
date

Ha én ezt,
1. course_teacher fogja információk tanár kapcsolatos Természetesen
2. teaching_fee fogja információkat a tanítási díj

Meg kell munkák. De valami a fejemben azt mondja, hogy ez nem helyes. Ez a két asztal hasonlóak egymáshoz, még azok létrehozása céljából különböző.

Bármilyen javaslat?

Szerkesztése 1 : Csak jött egy ötlet. Mi van, ha ezt módon

//Course_teacher Table
id (PK)
course_id (FK: course.course_id)
teacher_id (FK: teacher.teacher_id)

//Teaching_fee Table
id (FK: course_teacher.id)
fee
paid_status
date

Végső megoldás : Úgy döntöttem, hogy a btreat javasolt

// Course Table
course_id (PK)
...
...

// Teacher Table
teacher_id (PK)
...
...

// Course Teacher Table
course_teacher_id (PK) // synthetic
teacher_id (FK)
course_id (FK)
...
...

// Teacher Fee Table
course_teacher_id (PK)
date_paid (PK)
fee
paid_status
...
...
A kérdést 12/06/2011 13:22
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
1

Ez valószínűleg még normális.

TABLE RateCards uid díj paid_status dátum

TÁBLÁZAT Teacher_RateCards uid RateCardId TeacherId

Válaszolt 12/06/2011 13:27
a forrás felhasználó

szavazat
1

Ha egy „teaching_fee” tábla helyett „course_teacher”, akkor nem aggódik, amelynek null érték díjat, amíg az üzleti logika alkalmazása értelmezni tudja null (azaz a díj még nem fizetett ).

Alapján azonban a leírás, úgy hangzik, mint egy rekord minden egyes alkalommal egy tanár fizetett egy tanfolyamot, és a dátumot, hogy a fizetés szükségletek körül kell lennie? Ha ez a helyzet, akkor feltétlenül szükség van egy „teaching_fee” asztalnál, ahol a kombináció teacher_id, course_id és date_paid alkot egy egyedi kulcsot. Ha külön-külön meg kell tudni, hogy az összes egyedi tanár / persze kombinációk, lekérdezheti a „teaching_fee” táblázatban. Azonban, ha a tanár / persze kombináció nem jön létre a „teaching_fee”, amíg a tanár fizetik, akkor egy külön „course_teacher” tábla lenne.

Hogy elkerülje a elégedetlenség a denormalizing (ismétlődő) tanfolyam / tanár kombinációk másik lehetőség az lenne, hogy alakítsa ki a táblákat, mint ez:

// Course Table
course_id (PK)
...
...

// Teacher Table
teacher_id (PK)
...
...

// Course Teacher Table
course_teacher_id (PK) // synthetic
teacher_id (FK)
course_id (FK)
...
...

// Teacher Fee Table
course_teacher_id (PK)
date_paid (PK)
fee
paid_status
...
...
Válaszolt 12/06/2011 13:38
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more