Jak spolehlive zkontrolovat integritu dat po navrhu databaze – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak spolehlive zkontrolovat integritu dat po navrhu databaze – MySQL – Fórum – Programujte.comJak spolehlive zkontrolovat integritu dat po navrhu databaze – MySQL – Fórum – Programujte.com

 

uhg
~ Anonymní uživatel
1 příspěvek
4. 4. 2014   #1
-
0
-

Vzdycky jsem navrhoval jen velmi jednoduche databaze, kde nebyl problem zkontrolovat integritu dat pouze letmym pohledem.


Nyni jsem si vytvoril slozitejsi, kde mi to hlava trochu prestava stihat.

CREATE TABLE `Date` (
  `id` INTEGER PRIMARY KEY AUTO_INCREMENT,
  `date` DATETIME NOT NULL
);

CREATE TABLE `IP` (
  `id` INTEGER PRIMARY KEY AUTO_INCREMENT,
  `address` VARCHAR(200) CHARACTER SET UTF8 NOT NULL
);

CREATE TABLE `Date_IP` (
  `date` INTEGER NOT NULL,
  `ip` INTEGER NOT NULL,
  PRIMARY KEY (`date`, `ip`)
);

CREATE INDEX `idx_date_ip` ON `Date_IP` (`ip`);

ALTER TABLE `Date_IP` ADD CONSTRAINT `fk_date_ip__ip` FOREIGN KEY (`ip`) REFERENCES `IP` (`id`);

ALTER TABLE `Date_IP` ADD CONSTRAINT `fk_date_ip__date` FOREIGN KEY (`date`) REFERENCES `Date` (`id`);

CREATE TABLE `Location` (
  `id` INTEGER PRIMARY KEY AUTO_INCREMENT,
  `path` VARCHAR(200) CHARACTER SET UTF8 NOT NULL
);

CREATE TABLE `Date_Location` (
  `date` INTEGER NOT NULL,
  `location` INTEGER NOT NULL,
  PRIMARY KEY (`date`, `location`)
);

CREATE INDEX `idx_date_location` ON `Date_Location` (`location`);

ALTER TABLE `Date_Location` ADD CONSTRAINT `fk_date_location__location` FOREIGN KEY (`location`) REFERENCES `Location` (`id`);

ALTER TABLE `Date_Location` ADD CONSTRAINT `fk_date_location__date` FOREIGN KEY (`date`) REFERENCES `Date` (`id`);

CREATE TABLE `IP_Location` (
  `ip` INTEGER NOT NULL,
  `location` INTEGER NOT NULL,
  PRIMARY KEY (`ip`, `location`)
);

CREATE INDEX `idx_ip_location` ON `IP_Location` (`location`);

ALTER TABLE `IP_Location` ADD CONSTRAINT `fk_ip_location__ip` FOREIGN KEY (`ip`) REFERENCES `IP` (`id`);

ALTER TABLE `IP_Location` ADD CONSTRAINT `fk_ip_location__location` FOREIGN KEY (`location`) REFERENCES `Location` (`id`);

CREATE TABLE `UserAgent` (
  `id` INTEGER PRIMARY KEY AUTO_INCREMENT,
  `name` VARCHAR(200) CHARACTER SET UTF8 NOT NULL
);

CREATE TABLE `Date_UserAgent` (
  `date` INTEGER NOT NULL,
  `useragent` INTEGER NOT NULL,
  PRIMARY KEY (`date`, `useragent`)
);

CREATE INDEX `idx_date_useragent` ON `Date_UserAgent` (`useragent`);

ALTER TABLE `Date_UserAgent` ADD CONSTRAINT `fk_date_useragent__useragent` FOREIGN KEY (`useragent`) REFERENCES `UserAgent` (`id`);

ALTER TABLE `Date_UserAgent` ADD CONSTRAINT `fk_date_useragent__date` FOREIGN KEY (`date`) REFERENCES `Date` (`id`);

CREATE TABLE `IP_UserAgent` (
  `ip` INTEGER NOT NULL,
  `useragent` INTEGER NOT NULL,
  PRIMARY KEY (`ip`, `useragent`)
);

CREATE INDEX `idx_ip_useragent` ON `IP_UserAgent` (`useragent`);

ALTER TABLE `IP_UserAgent` ADD CONSTRAINT `fk_ip_useragent__ip` FOREIGN KEY (`ip`) REFERENCES `IP` (`id`);

ALTER TABLE `IP_UserAgent` ADD CONSTRAINT `fk_ip_useragent__useragent` FOREIGN KEY (`useragent`) REFERENCES `UserAgent` (`id`);

CREATE TABLE `Location_UserAgent` (
  `location` INTEGER NOT NULL,
  `useragent` INTEGER NOT NULL,
  PRIMARY KEY (`location`, `useragent`)
);

CREATE INDEX `idx_location_useragent` ON `Location_UserAgent` (`useragent`);

ALTER TABLE `Location_UserAgent` ADD CONSTRAINT `fk_location_useragent__location` FOREIGN KEY (`location`) REFERENCES `Location` (`id`);

ALTER TABLE `Location_UserAgent` ADD CONSTRAINT `fk_location_useragent__useragent` FOREIGN KEY (`useragent`) REFERENCES `UserAgent` (`id`)

Jde o to, ze mam ctyri objekty.

IP adresu

User Agenta

Destinaci

Datum

vsechny tyto objekty maji mezi sebou vztah many to many

jedna IP ma vic user_agentu

jeden user_agent ma vic ip

jedno datum ma vic IP adres

jedna ip adresa ma vic datumu

jedna destinace ma mnoho user agentu

jeden user agent ma mnoho destinaci

...atd

----------------------------------------------------------------

zkratka vsechno se vsim ma vztah many to many.

Pouzivam ORM a naplnilil jsem tu databazi zkusebnimi daty.

Tech tabulek mam 10. No asi neni treba dodavat ze rucne kontrolovat integritu dat neni pro me uplne snadne a navic si nejsem jisty, jestli pri takovem poctu tabulek(10) a tech objektu (4) nevznikne nejaka kombinace, kde se mi to cele sesype.

Verim, ze se bezne navrhuji jeste o nekolik radu slozitejsi databaze a tak by me zajimalo, jak to tam testuji, aby si byli jisti ze navrh a integrita dat je v poradku?

Diky za radu.

Nahlásit jako SPAM
IP: 96.44.189.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 3 hosté

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý