HANDS ON DOCTRINE :: An Interactive One Hour Tutorial on Doctrine's ORM for PHP

---------------------------------------------------------------------------------------------
/*
 * File: news.sql
 * Date: 03/04/2008
 * Version: 0.0.1
 * Author: Jaume Teixi <jaume@teixi.net>
Copyright (c) 2008 Jaume Teixi

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/

DROP INDEX id ON SYS_LANG;
DROP INDEX T_LANG_2 ON TRANSL_LANG;
DROP INDEX T_NEWS_2 ON TRANSL_NEWS;

DROP TABLE IF EXISTS TRANSL_NEWS;
DROP TABLE IF EXISTS TRANSL_LANG;
DROP TABLE IF EXISTS SYS_LANG;
DROP TABLE IF EXISTS CONT_NEWS;

CREATE TABLE CONT_NEWS (
       id INT UNSIGNED NOT NULL AUTO_INCREMENT
     , active BOOLEAN NOT NULL DEFAULT 0
     , created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
     , creator CHAR(250) NOT NULL
     , updated TIMESTAMP NOT NULL DEFAULT '0000-00-00'
     , updater CHAR(250) NOT NULL
     , PRIMARY KEY (id)
) ENGINE = InnoDB
CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE TABLE SYS_LANG (
       id CHAR(5) NOT NULL
     , active BOOLEAN NOT NULL DEFAULT 0
     , updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
     , updater CHAR(250) NOT NULL
     , PRIMARY KEY (id)
) ENGINE = InnoDB
CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE TABLE TRANSL_LANG (
       id_lang CHAR(5) NOT NULL
     , id_trad CHAR(5) NOT NULL
     , description CHAR(100) NOT NULL
     , PRIMARY KEY (id_lang, id_trad)
     , INDEX (id_lang)
     , CONSTRAINT FK_TRANSL_LANG_1 FOREIGN KEY (id_lang)
                  REFERENCES SYS_LANG (id)
     , INDEX (id_trad)
     , CONSTRAINT FK_TRANSL_LANG_2 FOREIGN KEY (id_trad)
                  REFERENCES SYS_LANG (id)
) ENGINE = InnoDB
CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE TABLE TRANSL_NEWS (
       id_news INT UNSIGNED NOT NULL
     , id_lang CHAR(5) NOT NULL
     , title CHAR(250)
     , body VARCHAR(10000)
     , PRIMARY KEY (id_lang, id_news)
     , INDEX (id_lang)
     , CONSTRAINT FK_TRANSL_NEWS_2 FOREIGN KEY (id_lang)
                  REFERENCES SYS_LANG (id)
     , INDEX (id_news)
     , CONSTRAINT FK_TRANSL_NEWS_1 FOREIGN KEY (id_news)
                  REFERENCES CONT_NEWS (id)
) ENGINE = InnoDB
CHARACTER SET utf8 COLLATE utf8_general_ci;


-- view done by hand

DROP VIEW IF EXISTS VIEW_NEWS;

CREATE OR REPLACE VIEW VIEW_NEWS as(
  select * from CONT_NEWS, TRANSL_NEWS
 where CONT_NEWS.id = TRANSL_NEWS.id_news
);

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

... back ...



2008-04-07 jaume@teixi.net on Teixi.net