Pracuję nad projektem. Jest to głównie do celów edukacyjnych, uważam, rzeczywiście próbując skomplikowany projekt jest najlepszym sposobem na naukę języka po zapoznaniu się z podstawami. Projektowanie baz danych nie jest mocną stroną, zacząłem je czytać, ale jego wczesne dni i nadal się uczę.Struktura bazy danych z dynamicznymi polami
Oto mój schemat alfa, im naprawdę w miejscu, gdzie im po prostu staramy się zanotować wszystko, co mogę myśleć i sprawdzając, czy jakieś problemy wyskoczyć. http://diagrams.seaquail.net/Diagram.aspx?ID=10094#
Niektóre z moich obaw chciałbym zwrotnych na temat:
Wskazówki dla rdzenia atrybuty jak na przykład obszar, powiedzmy dla uproszczenia obszary są kuchnia, sypialnia, ogród, łazienka i pokój dzienny. Dla innego klienta, który może być stroną główną, strona kontaktowa, about_us, ekran powitalny. Może to być 2 obszary i może to być 100, nie ma potrzeby ich ograniczania.
Stworzyłem oddzielne tabele dla wartości domyślnych i każdy jest powiązany z błędem. Później przyszedłem do problemu pól niestandardowych, jeśli ktoś chce na przykład oznaczyć temat, którego dotyczy błąd, nie mamy tego, jest prawdopodobnie 100 innych rzeczy, więc chciałem trzymać się zestawu podstawowych atrybutów i pól niestandardowych dać ludziom elastyczność.
Jednak gdy dotarłem do pól niestandardowych wiedziałem, że mam problem, nie mogę być tworzenie tabeli dla każdego pola niestandardowego więc zamiast stosować 2 tabele. pola niestandardowe i wartości_właściwego pola. Pomysł jest każde pole w tym domyślne zostaną zapisane w tej tabeli i każdy byłby powiązany z tabelą wartości, które po prostu mają coś takiego
custom_fields table
id project_id name
01 1 area(default)
12 2 rooms(custom)
13 4 website(custom)
custom_field_values table
id area project_id sort_number
667 area1 1 1
668 area2 1 2
669 area3 1 3
670 area4 1 4
671 bedroom 2 1
672 bathroom 2 2
673 garden 2 3
674 livingroom 2 4
675 homepage 4 1
676 about_us 4 2
677 contact 4 3
678 splash page 4 4
to wygląda skuteczny sposób obsłużyć dynamicznych pól jak ten lub czy są inne alternatywy?
domyślnie będzie ciężko kodowane więc można użyć je lub wymienić na własną rękę lub mogę utworzyć inną tabelę, aby umożliwić użytkownikom edytować nazwy domyślnych, które byłyby związane z ich projektem. Wszelkie opinie są mile widziane i jeśli jest coś bardzo oczywistego w przypadku problemów w programie, prosimy o krytyczną ocenę.
Fuj EAV. Chciałbym rzucić okiem na alternatywę NoSql, gdybym był tobą. –