Zaproponuję odpowiedź, która zadaje pytanie.
Jednym z mantrami, że ludzie, którzy modelu baz danych jak do szumu jest oddzielenie warstwy prezentacji (formatowania) i danych i wierzę, że odpowiednia część z like idzie coś takiego:
„Ty nie przechowuje sformatowane dane w bazach danych, ani nie dyskryminuj żadnego wyboru formatowania. Będziesz przechowywać dane w natywnych obsługiwanych typach danych. Aplikacje powinny dostarczać warstwę prezentacji i formatować kolumny. "
Cóż, odpowiedź Friedo nie idzie bezpośrednio przeciwko temu - dane są prezentowane tylko poprzez widok, magazyn jest nadal natywny.
To zależy od tego, jak zdefiniujesz tam warstwę prezentacji - jeśli widok i ustawienia serwera są uważane za część warstwy prezentacji, wszystko jest w porządku, w przeciwnym razie wystąpią potencjalne problemy, ponieważ ja, potencjalny użytkownik twojego systemu, nie będę umieć określić, że mój tysiąc separatora jest pojedynczym cytatem (i to przynajmniej w miejscu mojego obecnego zamieszkania).
Co więcej, kiedy jedziesz tą drogą, jak długo potrwa, dopóki nie będziesz musiał rozprawiać się z prośbami o ponowne przeanalizowanie danych z powrotem na tekst i ewentualnie skończyć się sytuacjami, w których może to nastąpić? niejednoznaczne (takie jak DD/MM/RR wobec MM/DD/RR)?
Powyższy zapis dotyczy tylko formatowania, określenie liczby cyfr dziesiętnych określa domenę danych i jest dobrą rzeczą, ponieważ ogranicza możliwość niespójnych danych wprowadzanych do bazy danych.
EDYCJA: (nieco bardziej rozrywkowy dla purystów, w odniesieniu do baz liczbowych) Mówienie, że dane liczb szesnastkowych nie mają znaczenia w innych bazach, jest generalnie błędną instrukcją. Wartości liczbowe nie mają podstawy i mogą być reprezentowane w dowolnej bazie. Ich domena (zestaw dozwolonych wartości) jest taka sama.
Wybór adresu szesnastkowego dla adresu MAC jest naturalny ze względów historycznych oraz z faktu, że na przykład łatwo jest odczytać część dostawcy w tym formacie. Wybór "zabawnego" formatu dla adresów IPv4 jest historycznym z zapewne anegdotycznym powodem.
Ale oba są tylko wyborem i wewnętrznie dobry system będzie je przechowywać bez uprzedzeń (na przykład przechowywanie IPv4, ponieważ tekst nie jest dobrą rzeczą). Kiedy RDBMS przedstawia wyniki zapytania (na ekranie), już przyjmuje rolę aplikacji i formatuje wyniki w pewien sposób.
Nie ma to znaczenia, a format używany w aplikacji nie powinien wpływać na sposób przechowywania pojemności pamięci masowej lub innych właściwości obiektu.
Tak więc mówię, że to dane konfiguracyjne aplikacji (metadane do daty głównej) i oczywiście może/powinien być przechowywany w bazie danych, ale z MySQL (który nie jest tak bogaty w definiowanie typów niestandardowych) może pasuje do definicji tabeli i powinna być po prostu zapisana w innej tabeli, którą aplikacja będzie czytać i stosować do twoich kolumn podczas prezentacji danych użytkownikowi, a nie w jakiś hackowy sposób, który nie będzie przenośny.
Na przykład pomysł na widok działa, ale czy można łatwo zapytać widok, aby uzyskać formaty zastosowane do pól? Lub powiedzmy, że chcesz zmienić formatowanie we wszystkich wystąpieniach pola WWPN we wszystkich kwerendach, które go używają (szesnastkowanie również brzmi jak już nie tak), byłoby to łatwe? Lub jeśli istnieją inne zapytania, które przekształcają dane i zapisują je w innej tabeli, czy zapiszesz je z zastosowanym formatem lub bez niego (ponowne przetwarzanie)? Etc ...
Teraz jeśli miał tabelę, która przechowuje dane konfiguracyjne aplikacji takich jak FieldFormatting: stołowy, pole, format, CheckRules, LongFormat (lub cokolwiek sprawia największy sens w danej sytuacji) to powyższe pytania stają się nieco łatwiej radzić sobie z tym i wybierać dodatkowe opcje dla aplikacji i logiki biznesowej.
Jeśli naprawdę (naprawdę, naprawdę) musisz zapewnić bezpośredni dostęp do bazy danych, a typy natywne sprawią, że dane staną się nieczytelne dla użytkowników i po prostu musisz sformatować, a następnie możesz użyć powyższej tabeli do wygenerowania i zaktualizowania widoków/zapytania pół-automatycznie.
UWAGA: Przyjmuję tutaj purystyczny punkt widzenia, ponieważ mam wrażenie, że podejmujesz tutaj decyzje projektowe, a nie gonisz za ostatnią kroplą wydajności lub wygody (na przykład między typami danych aplikacji i typami danych baz danych), gdy jest to praktyczne. problemy mogą być ważniejsze niż modelowanie wytycznych i zasad. Ale pytania z ostatniego akapitu wciąż są aktualne.
Przejdź na postgres? :) – hobbs