Autor Zpráva
djkmito
Profil
Zdravím,
zatiaľ som robil iba také jednoduché databázy, kde neboli tabuľky prepojené, no chcem už skúsiť niečo zložitejšie a rozmýšľam nad efektívnym návrhom schémy pre túto konkrétnu stránku.
http://teja.sk/tarrif.php
..máte nejaké návrhy?
Sir Tom
Profil
djkmito:
Také zdravím,

nejdříve popiš všechny požadavky a pak ti třeba někdo udělá nějakou schému, nebo dokonce ER model.
whoami
Profil
djkmito:
jak píše Sir Tom:

nejdříve popiš všechny požadavky

To by napomohlo tomu zjistit jakou chceš funkčnost.. Bez toho netuším co to má umět.. ale jednoduchý příklad který mě napadá při prvním pohledu na stránku..:


-- Adminer 3.6.2 MySQL dump

SET NAMES utf8;
SET foreign_key_checks = 0;
SET time_zone = 'SYSTEM';
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';

DROP TABLE IF EXISTS `category`;
CREATE TABLE `category` (
  `id` int(255) NOT NULL AUTO_INCREMENT COMMENT '#',
  `priority` int(255) NOT NULL DEFAULT '1024',
  `active` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `label` varchar(255) COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `label` (`label`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;


DROP TABLE IF EXISTS `category_item`;
CREATE TABLE `category_item` (
  `id` int(255) NOT NULL AUTO_INCREMENT COMMENT '#',
  `category_id` int(255) NOT NULL,
  `priority` int(255) NOT NULL DEFAULT '1024',
  `active` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `label` varchar(255) COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `category_id_label` (`category_id`,`label`),
  CONSTRAINT `category_item_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `category` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;


DROP TABLE IF EXISTS `category_item_duration`;
CREATE TABLE `category_item_duration` (
  `id` int(255) NOT NULL AUTO_INCREMENT COMMENT '#',
  `category_item_id` int(255) NOT NULL,
  `priority` int(255) NOT NULL DEFAULT '1024',
  `active` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `label` varchar(255) COLLATE utf8_bin NOT NULL,
  `price` double NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `category_item_id_label` (`category_item_id`,`label`),
  CONSTRAINT `category_item_duration_ibfk_1` FOREIGN KEY (`category_item_id`) REFERENCES `category_item` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;


-- 2012-12-31 01:55:42
Sir Tom
Profil
whoami:
To category_item_duration bych tam nedával... Cenu a délku trvání bych dal jako sloupce do tabulky category_item.
djkmito
Profil
stačí ak to budem vedieť vypísať na stránku a do admin rozhrania. Nič iné s tým robiť asi nebudem, len som hľadal efektívny spôsob keďže sa tie položky opakujú, ale cena a dĺžka sa rôzne mení.

whoami: čo má znamenať to "priority"?
whoami
Profil
Sir Tom:
Když se tam většina položek opakuje..? Je to jedna položka s několika tarify..

djkmito:
Pokud máš order id ASC například a přidáš něco později (chceš to mít nahoře).. Jinak řečeno řazení..
Sir Tom
Profil
djkmito:
Pak návrh whoami je ideální - máš tabulku kategorie, služby a pak nabídku/ceník, která obsahuje na řádku službu, dobu trvání a cenu.
djkmito
Profil
takže keď je tam predvolené 1024 tak budem s každou položkou priority dekrementovať?
do label v category_item_duration budem vkladať hodnotu dĺžky trvania? ak áno nebolo by lepšie ukladať to ako tinyint alebo time?
a čo znamená active, resp. ako to budem používať?
whoami
Profil
djkmito:
Jak co budeš používat je na tobě.. chtěl si jen příklad.. já ti ho dal.. active je pro možnost vypnutí (WHERE active = 1) a priority pro řazení (ORDER BY priority ASC, id ASC) jinak řečeno nové nakonec.. (za předpokladu že nedosáhneš 1024) a priority přiřadíš od 1 (nahoře).. co se týče duration tak to může být číslo (doba v minutách).. to není problém.. záleží na tobě..
djkmito
Profil
ja viem, len som sa chcel uistiť či to správne chápem. vďaka za odpovede, už len to zrealizovať

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: