Dlaczego masz attribute
stół ?
Atrybuty to kolumny, a nie tabele.
Link do witryny nic nam nie mówi.
Cała idea bazy danych polega na tym, że łączysz wiele małych tabel, zgodnie z wymaganiami, dla każdego zapytania, więc musisz się do tego przyzwyczaić. Jasne, daje ci siatkę, ale krótką i słodką, bez Nulls. To, co próbujesz zrobić, to unikać stołów; idź z tylko jedną ogromną siatką, która jest pełna zer.
(snip)
Nie należy poprzedzać nazw atrybutów (nazw kolumn) nazwą tabeli, to jest zbędne. Stanie się to jasne, gdy zaczniesz pisać SQL, który używa więcej niż jednej tabeli:wtedy możesz użyć nazwy tabeli lub aliasu, aby poprzedzić wszystkie niejednoznaczne nazwy kolumn.
Wyjątkiem jest PK, który jest w pełni renderowany i używany w tej formie wszędzie tam, gdzie jest FK.
Przejrzyj witrynę i przeczytaj kilka pytań dotyczących SQL.
Po wykonaniu tej czynności możesz później pomyśleć, czy chceszstrength
i defense
być atrybutami (kolumnami) type
; albo nie. I tak dalej.
Odpowiedzi na komentarze 30.11.10
.
Wspaniale, rozumiesz swoje dane. Dobrze. Teraz rozumiem, dlaczego miałeś tabelę atrybutów.
-
Upewnij się, że te 10 przykładów jest reprezentatywnych, przyglądam się im uważnie.
- Typ:Gem Nazwa:Emberspark Pendant... A może szyjaRóżne to typ?
- Czy Unique to prawdziwy ItemType? Myślę, że nie
- Akcja.Wyświetl „Proszę wrócić do organizatora sezonu”
- Gdzie są atrybuty
AttackPower
iHitRating
?
.
-
Ile jest różnych rodzajów przedmiotów (z 35 000), na przykład w moim klastrze produktów. Innym sposobem postawienia tego pytania jest to, ile jest wariacji. Znaczy nie 3500 Items ÷ 8 Attributes ?
-
Czy atrybuty item_attributes zmienią się bez? wydanie s/w (np. nowy
Inner Strength
atrybut) ? -
Na element, jakie atrybuty się powtarzają (więcej niż jeden); do tej pory widzę tylko działanie?
-
To jest gra, więc potrzebujesz bazy danych, która jest ciasna i bardzo szybka, może w pełni rezydująca w pamięci, prawda. Brak wartości null. Brak niczego VAR. Najkrótsze typy danych. Nigdy nie powielaj niczego (nie powtarzaj się). Czy jesteś zadowolony z bitów (wartość logiczna) i wektorów?
-
Czy musisz łatwo przetłumaczyć te regexes na SQL, czy jesteś zadowolony z poważnego hasła dla każdego z nich (tj. Kiedy już je uruchomisz w SQL, są całkiem stabilne i wtedy nie będziesz się z tym bawić, chyba że znajdziesz błąd ) (bez sarkazmu, poważne pytanie) ?
6.1 A może jest odwrotnie:baza danych rezyduje na dysku; ładujesz go do pamięci raz; uruchamiasz na tym wyrażenia regularne podczas rozgrywki; od czasu do czasu zapisywanie na dysku. Dlatego nie ma potrzeby tłumaczenia wyrażeń regularnych na SQL ?
Oto model danych, do którego zmierzam, to wcale nie jest pewne; będzie to modulowane przez twoje odpowiedzi. Aby było jasne:
-
Szósta forma normalna to Rząd składa się z klucza podstawowego i co najwyżej jednego atrybutu.
-
Narysowałem (6.1) nie (6), ponieważ Twoje dane utwierdzają mnie w przekonaniu, że potrzebujesz czystej relacyjnej bazy danych 6NF
-
Mój Model danych klastra produktów , przykład lepszy niż EAV, to 6NF, a następnie ponownie znormalizowany (nie w sensie normalnym) według typu DataType, aby zmniejszyć liczbę tabel, które już widziałeś. (Ludzie z EAV zwykle wybierają jeden lub kilka gigantycznych stołów.)
-
To jest proste 5NF, a tylko 2 stoły po prawej w 6NF.
Link do notacji IDEF1X dla tych, którzy nie są zaznajomieni ze standardem modelowania relacyjnego.
Odpowiedź na edycję nr 2 05 grudnia 10
1.1. OK, poprawione.
1.2. Następnie IsUnique jest wskaźnikiem (wartość logiczna) dla elementu.
1.3. Akcja. Rozumiem. Więc gdzie zamierzasz to przechowywać?
1.4. SzyjaMiscellaneous oznacza, że przedmiot należy do obu kategorii Neck
i Misc
. Oznacza to dwa oddzielne Item.Name=Emberspark Pendant
, każdy z inną kategorią.
.
2. i 5. Potrzebujesz więc szybkiej i szybkiej bazy danych rezydującej w pamięci. Dlatego próbuję przenieść Cię przez linię, z dala od GridLandu, do RelationalLand.
.
3. Ok, pozostajemy przy Piątej Formie Normalnej, nie ma potrzeby stosowania 6NF ani klastra produktów (tabele według typu danych). Pozbądź się Values
są liczbami całkowitymi.
.
4. Widzę dodatkowo:Level
, RequiredLevel
, IsUnique
, BindsPickedUp
, BindsEquipped
.
.
5. Bity to wartości logiczne { 0 | 1}. Wektory są wymagane do projekcji (relacyjnych). Dojdziemy do nich później.
.
6. Ok, wyjaśniłeś, nie tłumaczysz wyrażeń regularnych na SQL. (Slog oznacza ciężką pracę)..
7. Co to jest Category.ParentId ? Kategoria nadrzędna ? To nie pojawiło się wcześniej.
.
8. Attribute.GeneratedId ?
Oceń model danych (zaktualizowany). Mam jeszcze kilka kolumn, oprócz tego, co masz w swojej. Jeśli jest coś, czego nie rozumiesz w modelu danych, zadaj konkretne pytanie. Przeczytałeś dokument Notation, prawda?
Mam Action
jako tabela, z ItemAction
trzymając Value
:Equip: increase attack power by 28
to Action.Name
=Increase attack power by
i ItemAction.Value
=28.