![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) ![]() ![]() |
Planuję zrobić spis sklepów wraz z godzinami otwarcia od/do. Czy te tabele są dobrze znormalizowane? Przy okazji, Umie ktos to dobrze pobrać? ![]() (Z join, union, ...group by, ...) Konkretniej: `stores`.`store_name`, (`store_week`.`store_from`, `store_week`.`store_to` | jako `hours`.`hour` gdzie `hours`.`hour_id`=tamte id) gdzie `store_week`.`store_day`=WEEKDAY(CURDATE())+1 Ten post edytował KsaR 13.09.2016, 13:06:59 -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dobrze.
Choć osobiście chyba bym nie robił tablicy godzin, lecz wprowadzał je bezpośrednio do tablicy store_week. Co prawda masz klucz obcy tinyint, a godzina na smallint, ale nie wiem czy to taki wielki zysk. Zresztą na upartego godziny, przy założeniu otwarcia nawet z interwałem 15 minut, można zmieścić na tinyint. Z jakim zapytaniem masz problem? -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) ![]() ![]() |
Te godziny właśnie będą się sporo powtarzały,
Zwłaszcza takie jak 00:00, 18:00, 17:00, 07:00 itd. (Po przerobieniu oczywiście) A problem mam z zapytaniem żeby to spowrotem złożyć w całość: `stores`.`store_name`, (`store_week`.`store_from`, `store_week`.`store_to` | jako `hours`.`hour` gdzie `hours`.`hour_id`=tamte id) gdzie `store_week`.`store_day`=WEEKDAY(CURDATE())+1 bold - chce pobrać (jednak dla 2 i 3 bold ma byc podmienione z tym underline. Jeśli italic ma to samo id co te 2 boldy). Oraz z aktualnego dnia (drugi italic) -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Te godziny właśnie będą się sporo powtarzały, Zwłaszcza takie jak 00:00, 18:00, 17:00, 07:00 itd. (Po przerobieniu oczywiście) Zgadza się, ale niewiele zyskujesz, bo przez dodatkową tablicę masz powtarzalność klucza obcego na tinyint, a gdybyś godziny przechowywał bezpośrednio w dniach otwarcia, to byłaby powtarzalność smallint (choć tak jak pisałem, można użyć do tego tinyint - 0-00:00, 1-00:15, 2-00:30, 6-01:30, itd.). Tym bardziej, miałbyś łatwiejszą edycję dni otwarcia. A problem mam z zapytaniem żeby to spowrotem złożyć w całość: `stores`.`store_name`, (`store_week`.`store_from`, `store_week`.`store_to` | jako `hours`.`hour` gdzie `hours`.`hour_id`=tamte id) gdzie `store_week`.`store_day`=WEEKDAY(CURDATE())+1 bold - chce pobrać (jednak dla 2 i 3 bold ma byc podmienione z tym underline. Jeśli italic ma to samo id co te 2 boldy). Oraz z aktualnego dnia (drugi italic) Coś takiego?
-------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) ![]() ![]() |
[...]gdybyś godziny przechowywał bezpośrednio w dniach otwarcia, to byłaby powtarzalność smallint (choć tak jak pisałem, można użyć do tego tinyint - 0-00:00, 1-00:15, 2-00:30, 6-01:30, itd.). Tym bardziej, miałbyś łatwiejszą edycję dni otwarcia. Tego nie rozumiem do końca. Czyli że godziny z hours dać bezpośrednio w store_week? A tego z tinyint to już wgl nie rozumiem ![]() Cytat Coś takiego? Dokładnie tak, dzięki ![]() -------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Tak. Nie będzie co prawda, to 3NF, ale nie ma sensu.
Dla 21:01 nie da się. Zakładając, że tinyint unsigned ma 256 wartości, to możesz przechowywać z dokładnością do 6 minut (256/24=10.66, 60 minut/10=6 minut). Jeśli założysz interwał 10 minut, to mnożysz po prostu wartość przez 10. Np.: 128 to 128*10 minut=1280 minut = 21:20. Zrób to na smallint lub time:) -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 07:34 |