Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Data ogłoszenia, projekt.
Forum PHP.pl > Forum > Przedszkole
cykcykacz
Witam,
zastanawiam się jak zrobić w bazie danych zbieranie daty ogłoszenia w gazecie.

Jeden klient może zajerestrować ogłoszenie, które pojawia się nie tylko w jednym dniu, ale w kliku dniach bądź tygodniu.

Zastanawiam się jak to zrobić w bazie. Pewnie będę musiał stworzyć osobną tabelę powiedzmy daty_ogłoszenia.
I dla każdej daty osobny rekord?
Czyli coś na styl:
-id
-klient_id
-data_ogloszenia

Klient wybiera date pojawienia się ogłoszenia 10-03-2013 i 11-03-2013. Dane zostają zapisane w ten sposób.
id--klient_id--data_ogloszenia
1------4----------10-03-2013
2------4----------11-03-2013
Czy może macie inna propozycje?
kamil_lk
Zamiast klient_id dałbym ogłoszenie_id.
cykcykacz
Zrobiłem to w ten sposób, stworzyłem 3 tabele:
-klient
-rejestracja_ogloszenia
-data_emisji

I połączyłem relacji jeden do wielu. Tak wygląda skrypt:
CODE

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;

SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;

SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';



CREATE SCHEMA IF NOT EXISTS `ogloszenia` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;

USE `ogloszenia` ;

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

-- Table `ogloszenia`.`Klient`

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

CREATE TABLE IF NOT EXISTS `ogloszenia`.`Klient` (

`id` INT NOT NULL AUTO_INCREMENT ,

`name` VARCHAR(45) NOT NULL ,

`surname` VARCHAR(45) NOT NULL ,

`email` VARCHAR(45) NOT NULL ,

`address` VARCHAR(45) NOT NULL ,

`street` VARCHAR(45) NOT NULL ,

`phone` VARCHAR(12) NOT NULL ,

`post_code` VARCHAR(6) NOT NULL ,

`date` DATE NOT NULL ,

PRIMARY KEY (`id`) ,

UNIQUE INDEX `email_UNIQUE` (`email` ASC) )

ENGINE = InnoDB;

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

-- Table `ogloszenia`.`rejestracja_ogłoszenia`

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

CREATE TABLE IF NOT EXISTS `ogloszenia`.`rejestracja_ogłoszenia` (

`id` INT NOT NULL AUTO_INCREMENT ,

`Klient_id` INT NOT NULL ,

`text` TEXT NOT NULL ,

`rodzaj_ogłoszenia` VARCHAR(45) NOT NULL ,

`moduł` INT NOT NULL ,

`cena` DECIMAL(11,4) NOT NULL ,

PRIMARY KEY (`id`, `Klient_id`) ,

INDEX `fk_rejestracja_ogłoszenia_Klient_idx` (`Klient_id` ASC) ,

CONSTRAINT `fk_rejestracja_ogłoszenia_Klient`

FOREIGN KEY (`Klient_id` )

REFERENCES `ogloszenia`.`Klient` (`id` )

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB;

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

-- Table `ogloszenia`.`data_emisji`

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

CREATE TABLE IF NOT EXISTS `ogloszenia`.`data_emisji` (

`id` INT NOT NULL AUTO_INCREMENT ,

`rejestracja_ogłoszenia_id` INT NOT NULL ,

`data` DATE NOT NULL ,

PRIMARY KEY (`id`, `rejestracja_ogłoszenia_id`) ,

INDEX `fk_data_emisji_rejestracja_ogłoszenia1_idx` (`rejestracja_ogłoszenia_id` ASC) ,

CONSTRAINT `fk_data_emisji_rejestracja_ogłoszenia1`

FOREIGN KEY (`rejestracja_ogłoszenia_id` )

REFERENCES `ogloszenia`.`rejestracja_ogłoszenia` (`id` )

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB;

USE `ogloszenia` ;

SET SQL_MODE=@OLD_SQL_MODE;

SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;

SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;


Tak diagram:
http://imageshack.us/photo/my-images/547/diagrameer.jpg

Piszcie co myślicie czy mam jakieś rażące błędy itd.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.