Changes between Version 3 and Version 4 of ddl


Ignore:
Timestamp:
06/11/26 13:40:14 (5 days ago)
Author:
236036
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ddl

    v3 v4  
    44
    55
    6 
    76{{{#!sql
    87
     8
    99CREATE TABLE public.author (
    10 author_id BIGINT NOT NULL,
    11 first_name VARCHAR(100),
    12 last_name VARCHAR(100),
    13 birth_date DATE,
    14 nationality VARCHAR(100),
    15 CONSTRAINT author_pkey PRIMARY KEY (author_id)
     10    author_id BIGINT NOT NULL,
     11    first_name VARCHAR(100),
     12    last_name VARCHAR(100),
     13    birth_date DATE,
     14    nationality VARCHAR(100),
     15    CONSTRAINT author_pkey PRIMARY KEY (author_id)
    1616);
    1717
    1818CREATE TABLE public.author_book (
    19 author_id BIGINT NOT NULL,
    20 book_id BIGINT NOT NULL,
    21 CONSTRAINT author_book_pkey PRIMARY KEY (author_id, book_id),
    22 CONSTRAINT author_book_author_id_fkey
    23 FOREIGN KEY (author_id)
    24 REFERENCES public.author(author_id)
     19    author_id BIGINT NOT NULL,
     20    book_id BIGINT NOT NULL,
     21    CONSTRAINT author_book_pkey PRIMARY KEY (author_id, book_id),
     22    CONSTRAINT author_book_author_id_fkey
     23        FOREIGN KEY (author_id)
     24        REFERENCES public.author(author_id)
    2525);
    2626
    2727CREATE TABLE public.book (
    28 book_id BIGINT NOT NULL,
    29 title VARCHAR(255) NOT NULL,
    30 isbn VARCHAR(20) NOT NULL,
    31 publication_year INT NOT NULL,
    32 total_copies INT NOT NULL,
    33 edition BIGINT,
    34 publisher_id BIGINT,
    35 author_id BIGINT,
    36 location_id BIGINT,
    37 CONSTRAINT book_pkey PRIMARY KEY (book_id)
    38 );
    39 
    40 ...
     28    book_id BIGINT NOT NULL,
     29    title VARCHAR(255) NOT NULL,
     30    isbn VARCHAR(20) NOT NULL,
     31    publication_year INT NOT NULL,
     32    total_copies INT NOT NULL,
     33    edition BIGINT,
     34    publisher_id BIGINT,
     35    author_id BIGINT,
     36    location_id BIGINT,
     37    CONSTRAINT book_pkey PRIMARY KEY (book_id),
     38    CONSTRAINT fk_author
     39        FOREIGN KEY (author_id)
     40        REFERENCES public.author(author_id),
     41    CONSTRAINT fk_location
     42        FOREIGN KEY (location_id)
     43        REFERENCES public.location(location_id),
     44    CONSTRAINT fk_publisher
     45        FOREIGN KEY (publisher_id)
     46        REFERENCES public.publisher(publisher_id)
     47);
     48
     49CREATE TABLE public.bookcopy (
     50    copy_id BIGINT NOT NULL,
     51    book_id BIGINT,
     52    location_id BIGINT,
     53    available INT,
     54    status_id BIGINT,
     55    library_id BIGINT,
     56    reservation_id INT,
     57    CONSTRAINT bookcopy_pkey PRIMARY KEY (copy_id),
     58    CONSTRAINT bookcopy_library_id_fkey
     59        FOREIGN KEY (library_id)
     60        REFERENCES public.library(library_id),
     61    CONSTRAINT bookcopy_location_id_fkey
     62        FOREIGN KEY (location_id)
     63        REFERENCES public.location(location_id),
     64    CONSTRAINT bookcopy_status_id_fkey
     65        FOREIGN KEY (status_id)
     66        REFERENCES public.bookstatus(status_id),
     67    CONSTRAINT fk_bookcopy_reservation
     68        FOREIGN KEY (reservation_id)
     69        REFERENCES public.reservation(reservation_id)
     70);
     71
     72CREATE TABLE public.bookgenre (
     73    book_genre_id BIGINT NOT NULL,
     74    book_id BIGINT,
     75    genre_id BIGINT,
     76    CONSTRAINT bookgenre_pkey PRIMARY KEY (book_genre_id),
     77    CONSTRAINT bookgenre_genre_id_fkey
     78        FOREIGN KEY (genre_id)
     79        REFERENCES public.genre(genre_id)
     80);
     81
     82CREATE TABLE public.booklanguages (
     83    book_language_id BIGINT NOT NULL,
     84    book_id BIGINT,
     85    language_id BIGINT,
     86    CONSTRAINT booklanguages_pkey PRIMARY KEY (book_language_id),
     87    CONSTRAINT booklanguages_language_id_fkey
     88        FOREIGN KEY (language_id)
     89        REFERENCES public.language(language_id)
     90);
     91
     92CREATE TABLE public.bookstatus (
     93    status_id BIGINT NOT NULL,
     94    name VARCHAR(50),
     95    description TEXT,
     96    CONSTRAINT bookstatus_pkey PRIMARY KEY (status_id)
     97);
     98
     99CREATE TABLE public.borrowing (
     100    borrowing_id BIGINT NOT NULL DEFAULT nextval('borrowing_seq'::regclass),
     101    book_id BIGINT,
     102    borrow_date DATE,
     103    return_date DATE,
     104    due_date DATE,
     105    return_status INT,
     106    copy_id BIGINT,
     107    membership_id BIGINT,
     108    borrowed_by BIGINT,
     109    returned_by BIGINT,
     110    reservation_id BIGINT,
     111    CONSTRAINT borrowing_pkey PRIMARY KEY (borrowing_id),
     112    CONSTRAINT borrowing_borrowed_by_fkey
     113        FOREIGN KEY (borrowed_by)
     114        REFERENCES public.employee(employee_id),
     115    CONSTRAINT borrowing_copy_id_fkey
     116        FOREIGN KEY (copy_id)
     117        REFERENCES public.bookcopy(copy_id),
     118    CONSTRAINT borrowing_membership_id_fkey
     119        FOREIGN KEY (membership_id)
     120        REFERENCES public.membership(membership_id),
     121    CONSTRAINT borrowing_reservation_id_fkey
     122        FOREIGN KEY (reservation_id)
     123        REFERENCES public.reservation(reservation_id),
     124    CONSTRAINT borrowing_returned_by_fkey
     125        FOREIGN KEY (returned_by)
     126        REFERENCES public.employee(employee_id)
     127);
     128
     129CREATE TABLE public.employee (
     130    employee_id BIGINT NOT NULL,
     131    first_name VARCHAR(100),
     132    last_name VARCHAR(100),
     133    email VARCHAR(150),
     134    phone VARCHAR(50),
     135    employee_type_id BIGINT,
     136    hire_date DATE,
     137    salary INT,
     138    CONSTRAINT employee_pkey PRIMARY KEY (employee_id),
     139    CONSTRAINT employee_employee_type_id_fkey
     140        FOREIGN KEY (employee_type_id)
     141        REFERENCES public.employeetype(employee_type_id)
     142);
     143
     144CREATE TABLE public.employeetype (
     145    employee_type_id BIGINT NOT NULL,
     146    type_name VARCHAR(100),
     147    description TEXT,
     148    CONSTRAINT employeetype_pkey PRIMARY KEY (employee_type_id)
     149);
     150
     151CREATE TABLE public.fee (
     152    fee_id BIGINT NOT NULL,
     153    amount INT,
     154    description TEXT,
     155    fee_type_id BIGINT,
     156    membership_id BIGINT,
     157    CONSTRAINT fee_pkey PRIMARY KEY (fee_id),
     158    CONSTRAINT fee_fee_type_id_fkey
     159        FOREIGN KEY (fee_type_id)
     160        REFERENCES public.feetype(fee_type_id),
     161    CONSTRAINT fee_membership_id_fkey
     162        FOREIGN KEY (membership_id)
     163        REFERENCES public.membership(membership_id)
     164);
     165
     166CREATE TABLE public.feetype (
     167    fee_type_id BIGINT NOT NULL,
     168    type_name VARCHAR(255),
     169    description TEXT,
     170    CONSTRAINT feetype_pkey PRIMARY KEY (fee_type_id)
     171);
     172
     173CREATE TABLE public.fine (
     174    fine_id BIGINT NOT NULL,
     175    membership_id BIGINT,
     176    borrowing_id BIGINT,
     177    amount INT,
     178    created_date DATE,
     179    payment_id BIGINT,
     180    fee_type_id BIGINT,
     181    CONSTRAINT fine_pkey PRIMARY KEY (fine_id),
     182    CONSTRAINT fine_borrowing_id_fkey
     183        FOREIGN KEY (borrowing_id)
     184        REFERENCES public.borrowing(borrowing_id),
     185    CONSTRAINT fine_fee_type_id_fkey
     186        FOREIGN KEY (fee_type_id)
     187        REFERENCES public.feetype(fee_type_id),
     188    CONSTRAINT fine_membership_id_fkey
     189        FOREIGN KEY (membership_id)
     190        REFERENCES public.membership(membership_id),
     191    CONSTRAINT fine_payment_id_fkey
     192        FOREIGN KEY (payment_id)
     193        REFERENCES public.payment(payment_id)
     194);
     195
     196CREATE TABLE public.genre (
     197    genre_id BIGSERIAL NOT NULL,
     198    name VARCHAR(100),
     199    description TEXT,
     200    CONSTRAINT genre_pkey PRIMARY KEY (genre_id)
     201);
     202
     203CREATE TABLE public.language (
     204    language_id BIGINT NOT NULL,
     205    name VARCHAR(100),
     206    code VARCHAR(10),
     207    native_name VARCHAR(100),
     208    CONSTRAINT language_pkey PRIMARY KEY (language_id)
     209);
     210
     211CREATE TABLE public.library (
     212    library_id BIGINT NOT NULL,
     213    name VARCHAR(255),
     214    address TEXT,
     215    contact_email VARCHAR(150),
     216    CONSTRAINT library_pkey PRIMARY KEY (library_id)
     217);
     218
     219CREATE TABLE public.location (
     220    location_id BIGINT NOT NULL,
     221    name VARCHAR(100),
     222    address TEXT,
     223    floor INT,
     224    section VARCHAR(50),
     225    library_id BIGINT,
     226    CONSTRAINT location_pkey PRIMARY KEY (location_id),
     227    CONSTRAINT location_library_id_fkey
     228        FOREIGN KEY (library_id)
     229        REFERENCES public.library(library_id)
     230);
     231
     232CREATE TABLE public.member (
     233    member_id BIGINT NOT NULL DEFAULT nextval('member_id_seq'::regclass),
     234    first_name VARCHAR(100),
     235    last_name VARCHAR(100),
     236    email VARCHAR(150),
     237    phone VARCHAR(50),
     238    member_type_id BIGINT,
     239    membership_start_date DATE,
     240    membership_end_date DATE,
     241    address TEXT,
     242    membership_status VARCHAR(20),
     243    CONSTRAINT member_pkey PRIMARY KEY (member_id),
     244    CONSTRAINT member_member_type_id_fkey
     245        FOREIGN KEY (member_type_id)
     246        REFERENCES public.membershiptype(member_type_id)
     247);
     248
     249CREATE TABLE public.membership (
     250    membership_id BIGINT NOT NULL,
     251    member_id BIGINT,
     252    start_date DATE,
     253    end_date DATE,
     254    status INT,
     255    member_type_id BIGINT,
     256    CONSTRAINT membership_pkey PRIMARY KEY (membership_id),
     257    CONSTRAINT membership_member_id_fkey
     258        FOREIGN KEY (member_id)
     259        REFERENCES public.member(member_id),
     260    CONSTRAINT membership_member_type_id_fkey
     261        FOREIGN KEY (member_type_id)
     262        REFERENCES public.membershiptype(member_type_id)
     263);
     264
     265CREATE TABLE public.membershiptype (
     266    member_type_id BIGINT NOT NULL,
     267    type_name VARCHAR(100),
     268    max_borrow_limit INT,
     269    max_days INT,
     270    fee_per_day INT,
     271    CONSTRAINT membershiptype_pkey PRIMARY KEY (member_type_id)
     272);
     273
     274CREATE TABLE public.payment (
     275    payment_id BIGINT NOT NULL,
     276    member_id BIGINT,
     277    fee_id BIGINT,
     278    payment_date DATE,
     279    amount INT,
     280    CONSTRAINT payment_pkey PRIMARY KEY (payment_id),
     281    CONSTRAINT payment_fee_id_fkey
     282        FOREIGN KEY (fee_id)
     283        REFERENCES public.fee(fee_id),
     284    CONSTRAINT payment_member_id_fkey
     285        FOREIGN KEY (member_id)
     286        REFERENCES public.member(member_id)
     287);
     288
     289CREATE TABLE public.publisher (
     290    publisher_id BIGINT NOT NULL,
     291    name VARCHAR(255),
     292    website VARCHAR(255),
     293    registration_number VARCHAR(100),
     294    CONSTRAINT publisher_pkey PRIMARY KEY (publisher_id)
     295);
     296
     297CREATE TABLE public.reservation (
     298    reservation_id BIGINT NOT NULL DEFAULT nextval('reservation_seq'::regclass),
     299    member_id BIGINT,
     300    book_id BIGINT,
     301    requested_date DATE,
     302    expected_date DATE,
     303    status CHAR(20),
     304    copy_id BIGINT,
     305    CONSTRAINT reservation_pkey PRIMARY KEY (reservation_id),
     306    CONSTRAINT reservation_copy_id_fkey
     307        FOREIGN KEY (copy_id)
     308        REFERENCES public.bookcopy(copy_id),
     309    CONSTRAINT reservation_member_id_fkey
     310        FOREIGN KEY (member_id)
     311        REFERENCES public.member(member_id)
     312
     313);
    41314
    42315}}}