Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Data ogłoszenia, projekt.
cykcykacz
post
Post #1





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


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?

Ten post edytował cykcykacz 11.03.2013, 09:45:52
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
kamil_lk
post
Post #2





Grupa: Zarejestrowani
Postów: 325
Pomógł: 33
Dołączył: 31.05.2008

Ostrzeżenie: (0%)
-----


Zamiast klient_id dałbym ogłoszenie_id.
Go to the top of the page
+Quote Post
cykcykacz
post
Post #3





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 16:30