2009-09-22 12 views
6

Niedawno wprowadzono nową funkcję programu Access 2007, która obejmuje pola wielowartościowe. Moim początkowym wrażeniem jest to, że nie jest dobrym pomysłem korzystanie z wielu wartości w jednym polu. Tradycyjnie, jeśli chcesz, aby rekord zawierał kilka wartości dla pola, tworzysz dwie kolejne tabele i łączysz je z kluczami obcymi. Pozwala to na łatwe wysyłanie zapytań i zapewnia, że ​​zduplikowane wartości odnoszą się do tego samego przedmiotu. Przechowywanie list w komórce wydaje się być naruszeniem celu baz danych.Pola wielowartościowe to dobry pomysł?

Czy są dobre zastosowania dla tych pól, które nie sprawiają, że czuję się brudna?

Odpowiedz

3

Ideą wielowartościowych pól było wspieranie łatwego tworzenia obiektów raportów/interfejsu, a ponadto można utworzyć formularz wyświetlający kategorie kategorii dla danego problemu. Zamiast robić jakieś intensywne prace, broń Boże łączy, to było rzekomo prostsze przechowywanie:

mechaniczne, elektryczne

jako wartość w polu zamiast

mechaniczna Elektrycznego

personnally I Nie podoba mi się to i zakładam, że tego typu pole zostało stworzone dla personelu niezwiązanego z techniką, takiego jak księgowi :) (tylko żartuję). Nie poważnie, nie używaj tego, chyba że stworzysz głupie narzędzie, z którego rzadko korzysta ktokolwiek i rzadko ktokolwiek będzie musiał się w to włożyć.

Właściwym sposobem poradzenia sobie z tym jest łączenie, brak duplikatów i brak wielowartościowych wartości w kolumnach (wszystko to w każdym razie 3nf).

Innym powodem, dla którego zostało stworzone, było wspieranie wartości wielu wewnątrz listy programu SharePoint.

Jon

+0

+1 dla księgowych żart, heh. – Bratch

3

Duży segment rynku Access nie jest deweloperem, ale raczej technicznym użytkownikiem. Mogą nie rozumieć wartości normalizacji, ale mogą dostać coś do pracy. Potrzebują po prostu czegoś łatwego i jest to lepsze niż pole tekstowe, w którym wpisuje się użytkownik, i mamy nadzieję, że wszyscy wpisują to samo.

Gdy uczą się więcej, mogą zacząć korzystać z innych tabel i kluczy obcych. Ale czasami pole wielowartościowe jest wystarczająco dobre.

+2

Podobnie jak 640 KB i 2 cyfry przechowywać w roku;) – RedFilter

1

prostu powiedzieć NIE!
jeśli uczysz się języka SQL, naucz się właściwej drogi i normalizuj swoje tabele. jeśli znasz projekt bazy danych, zrób to poprawnie. Nie wszystkie funkcje muszą być używane.

6

Patrz:

Multivalued datatypes considered harmful: How dangerous can a data type be?

miałem długą rozmowę z Suraj Poozhiyil program Menedżer dostępu ... zarówno Suraj i zgadzam się z całego serca, że ​​nie deweloperzy nie trzeba użyć pola wielowartościowe. Ludzie, którzy rozumieją bazy danych , już mają dobry sposób na implementacji wielu do wielu relacji i nie zyskają żadnych korzyści z pól wielowartościowych.

Tak więc, moja jasna i pewna rada dla deweloperów nie polega na użyciu pól wielowartościowych . Nie mają nam nic do zaoferowania, poza potencjalnym bólem.

+1

Dlaczego więc je stworzyli? Najwyraźniej mają one zastosowanie w świecie rzeczywistym, istnieje cała baza danych, Unidata i Universe, które są zbudowane wokół nich. – Noah

+0

@Noah: szybkie google mówi mi, że są one oparte na PICK, a nie SQL. Jak rozumiem, PICK ma składnię (operatory itp.) Wymagane do wysyłania zapytań wielowartościowych danych, Access/Jet/ACE nie. Naprawdę nie moja dziedzina, szczerze mówiąc (użyłem Intersystems Caché, ale tylko przez jego SQL Gateway - która jest doskonała - a nie rzeczy MUMPSa). Jestem najszczęśliwszy z 5NF :) – onedaywhen

4

Naprawdę nie odpowiadając na pytanie tutaj, ale czytelnicy mogą chcieć zwrócić uwagę, że istnieje cały przemysł nisza wokół idei MultValued Databases:

Bazy te różnią się od relacyjnej bazie danych, które mają cechy, które wspierają i zachęcają użycie atrybutów mających listę wartości, raczej niż wszystkie atrybuty o pojedynczej wartości

Ponieważ w tym przypadku silnik bazy danych ma rozszerzenia na język zapytań w celu dostosowania do wielowymiarowego charakteru jego tabel (co, jak zakładam, prawdopodobnie nie ma dostępu), nie jest tak naprawdę porównywalny z polami wielowartościowymi w programie Access. Ale w każdym razie ciekawa paralela (dla każdego, kto nie słyszał wcześniej o Multvalued Databases).

0

Naprawdę nie lubię pól wielowartościowych. Może zrobili to, aby ułatwić komunikację z innymi wielowartościowymi systemami, takimi jak stary system PICK/Unidata. Założę się, że jest to fajna rozbudowa bazy danych Access z dużym wykorzystaniem tej nowej funkcji do SQL Server.

+0

Jedynym powodem, dla którego jest w ACE jest kompatybilność z Sharepoint. Dane są faktycznie dostępne za pośrednictwem zestawów rekordów i byłoby całkiem łatwo napisać VBA, aby zapisać go do prawdziwych tabel N: N. Oczywiście może się zdarzyć, że SSMA dla programu Access 4.2 rozpoznaje pola SN i zwiększa je poprawnie. Jeśli jesteś zainteresowany, mógłbym dać z siebie wszystko i dowiedzieć się, ponieważ mam zainstalowane A2007 i SSMA 4.2. –

+0

@ David-W-Fenton: "Jedynym powodem, dla którego jest on w ACE, jest zgodność z Sharepointem" - ... jednak zespół Access promuje swoje ogólne zastosowanie w programie Access, np. nie wspomniano już o SharePoint: http://office.microsoft.com/en-us/access-help/use-a-list-that-stores-multiple-values-HA010031117.aspx – onedaywhen

+1

Materiały marketingowe bardzo często nie ujawnić całą prawdę. –

2

Pola wielowartościowe mogą łatwo zaoszczędzić na konieczności utworzenia nowego stołu i relacji.

Soda -> Rodzaje

Dlaczego muszę zupełnie nową tabelę tylko powiedzieć, że Pepsi jest w regularnych, diety i więcej.

życzę oni pozwalają nam dać wielowartościowe pól kolumn, wtedy byłoby po prostu jak stół, ale o wiele mniej pracy

Powiązane problemy