![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 0 Dołączył: 20.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam pytanie co sądzicie na temat rozwiązania dotyczącego przetrzymywania artykułów w bazie danych a mianowicie: Obecnie mam trzy tabele -artykuły -artykuły_archiwalne -artykuły_prywatne i w każdej powiązanej tabeli np kategorie, liczniki, itp mam dodatkowe pole o nazwie: tabela i tam umieszczoną nazwę tabeli. Myślę, że rozwiązanie dobre bo mogę odciążać tabelę główną usuwając część rekordów do tabeli archiwalne ale niestety dochodzą wszędzie warunki dla tabel powiązanych : ... WHERE id_artykulu = '' AND tabela = 'artykuły_archiwalne' itp Pytanie czy nie lepiej było by wykonać to w ten sposó, że dodać w tabeli artykuły pole typ o możliwościach: widoczne archiwum prywatny a z pozostałych tabel całkowicie pozbyć się pola tabela i warunku tabela = 'nazwa tabeli' z zapytań sql? Być może ktoś miał podobny problem, dlatego proszę o poradę. Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Zdecydowanie lepiej zastosować kolumnę-flagę przechowującą status/rodzaj artykułu.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Drugie rozwiązanie wydaje się sensowniejsze, jeżeli ilość artykułów nie jest kosmiczna
![]() 1-widoczne 2-archiwum 3-prywatny |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 0 Dołączył: 20.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ok, dzięki za odpowiedź.
A co sądzicie o zastosowaniu pola typu enum np:
Ze skryptu będą również korzystać inne osoby i zależy mi na maksymalnej czytelności z jak najmniejszą ilością dodatkowych objaśnień, oczywiście przy zachowaniu dobrej wydajności ![]() |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@indexx: @CuteOne: O ile to tylko możliwe nigdy nie powinno korzystać się z jakiś magicznych liczb w kodzie/programie, dlatego też użycie ENUM-a jest tu jak najbardziej na miejscu.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Trochę dziwny podział, czy artykuł w archiwum nie może być normalny lub prywatny ?
Wszystko zależy od założeń, ale myślę że łączenie oznaczenia dostępu do artykułu i tego czy artykuł jest aktualny czy archiwalny jest złym pomysłem ![]() -------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 0 Dołączył: 20.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Założenie jest właśnie takie, że nie może, jedyny podział to taki jak opisałem i nie ma tutaj możliwości artykuły prywatnego w archiwum itp
Jedyne co jeszcze przychodzi mi do głowy to, że być może będę miał dodatkowy podział na aktywny i oczekujący w dziale normalne i nie wiem czy nie lepszym wyjściem było by utworzenie: - normalny_aktywny - normalny_oczekujacy Jednak w takim wypadku dochodzą dodatkowe zapytania łaczone typu WHERE typ = 'normalny_aktywny' AND typ = 'normalny_oczekujacy' gdybym chciał wyszukać czy wyświetlać wszystkie itp. Teraz rozwiązał bym to dodatkową kolumną aktywny => tinyint 0 lub 1 ponieważ mam zdacydowanie więcej zapytań w których wystarczy jeden warunek
zamiast
Chyba zaczynam za dużo kombinować ![]() Ten post edytował indexx 23.11.2012, 14:46:56 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 17:21 |