Schemat bazy danych dla User, Car, Addon

0

Witam,

Buduję prostą aplikację i chciałem się zapytać kogoś doświadczonego o projekt bazy danych. Założenia są proste:

  1. Użytkownik posiada 1 lub więcej samochodów.
  2. Użytkownik tworzy 1 lub więcej dodatków do samochodu.
  3. Samochód należy do 1 użytkownika.
  4. Samochów może zawierać 1 lub więcej dodatków, które zostały dodane przez jakiegoś użytkownika.
  5. Dodatek należy do 1 samochodu.

Zrobiłem taki o to schemat (modelowanie metodą Chen):

diagram.png

Tabele:
users (id_u, name)
cars (id_c, name)
addons (id_a, name)
has (id_u, id_c
makes (id_u, id_a)
contains (id_c, id_a)

Finalne tabele:
users (id_u PRIMARY KEY, name)
cars (id_c PRIMARY KEY, id_u FOREIGN KEY, name)
addons (id_a PRIMARY KEY, id_c FOREIGN KEY, id_u FOREIGN KEY, name)

Czy taki schemat będzie ok? :)

1

Między Addons a Car masz 1:1 a nie 1:N
Po co Ci tabele pośrednie skoro nie masz ani jednego związku N:N? Wystarczą Ci trzy tabele.
Co to jest name? Nie kładź sobie kłód pod nogi i nazywaj ID jak człowiek id_car, id_addons, id_user. Dzisiaj pamiętasz które id do czego, ale jak się baza rozrośnie to zginiesz.

0

@kate87:

kate87 napisał(a):

Między Addons a Car masz 1:1 a nie 1:N

Mam 1:N chyba, że chodzi o coś innego :P Car może mieć kilka Addon, ale Addon może należeć tylko do 1 Car.

kate87 napisał(a):

Po co Ci tabele pośrednie skoro nie masz ani jednego związku N:N? Wystarczą Ci trzy tabele.

Mam 3 tabele po optymalizacji schematu: users, cars, addons :P Schemat jest zrobiony za pomocą modelowania Chen (encje, związki, atrybuty).

Nazwy id zmienię na bardziej czytelne. Name to nazwa np. użytkownika, samochodu lub dodatku do samochodu.

Tak w skrócie to te powiązania mogą być? :)

1

Brakuje ci tej informacji:
Użytkownik tworzy 1 lub więcej dodatków do samochodu.
EDIT: A nie, jest...

1 użytkowników online, w tym zalogowanych: 0, gości: 1