ďťż
 
CREATE TABLE i CONSTRAINTy ďťż
 
CREATE TABLE i CONSTRAINTy
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

CREATE TABLE i CONSTRAINTy



plewas - 16-02-2006 10:05
CREATE TABLE i CONSTRAINTy
  Witam,
Tak sie zastanawiam czy jest sens wpisywac wszelkie ograniczenia dla pol np.
CREATE TABLE employee (
emp_id serial CONSTRAINT pk_emp_id PRIMARY KEY,
emp_fname varchar(12) NOT NULL CONSTRAINT emp_fname_not_empty CHECK
(emp_fname <> ''),
emp_lname varchar(15) NOT NULL CONSTRAINT emp_lname_not_empty CHECK
(emp_lname <> ''),
emp_department char(3) NOT NULL CONSTRAINT emp_department_not_empty
CHECK (emp_department <> '') CONSTRAINT fk_emp_department REFERENCES
departments(dep_code),
CONSTRAINT employee_fname_lname_unique UNIQUE(emp_fname, emp_lname)
);

czy nie wystarczy samo NOT NULL wszędzie.
O ile z fname i laname to sprawa jest dosc jasna ze powinno pewnie tak
byc to z emp_department juz nie. Jak widac jest tam referencja do innej
relacji. Jak bedzie interfejs zrobiony to bedzie sie ten department
wybierac z listy rozwujanej i nie da sie nic innego wybrac. Tak wiec czy
potrzebne, albo czy wlasciwe jest dodawanie ogfraniczenie ze nie moze
byc puste to pole? NOT NULL musi byc bo zawsze ma byc tam cos podane. i

Pozdrawiam
plewas





=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 20-02-2006 14:07

  plewas wrote:
> Witam,
> Tak sie zastanawiam czy jest sens wpisywac wszelkie ograniczenia dla pol
> np.
> CREATE TABLE employee (
> emp_id serial CONSTRAINT pk_emp_id PRIMARY KEY,
> emp_fname varchar(12) NOT NULL CONSTRAINT emp_fname_not_empty CHECK
> (emp_fname <> ''),
> emp_lname varchar(15) NOT NULL CONSTRAINT emp_lname_not_empty CHECK
> (emp_lname <> ''),
> emp_department char(3) NOT NULL CONSTRAINT emp_department_not_empty
> CHECK (emp_department <> '') CONSTRAINT fk_emp_department REFERENCES
> departments(dep_code),
> CONSTRAINT employee_fname_lname_unique UNIQUE(emp_fname, emp_lname)
> );
>
> czy nie wystarczy samo NOT NULL wszędzie.
> O ile z fname i laname to sprawa jest dosc jasna ze powinno pewnie tak
> byc to z emp_department juz nie. Jak widac jest tam referencja do innej
> relacji. Jak bedzie interfejs zrobiony to bedzie sie ten department
> wybierac z listy rozwujanej i nie da sie nic innego wybrac. Tak wiec czy
> potrzebne, albo czy wlasciwe jest dodawanie ogfraniczenie ze nie moze
> byc puste to pole? NOT NULL musi byc bo zawsze ma byc tam cos podane. i

Tylko w niektórych bazach '' jest zamieniane na null przy wstawianiu. Moim
zdaniem jest to złe zachowanie.

--
P.M.




Grzesiek G. - 20-02-2006 14:07

  plewas napisał(a):
> Witam,
> Tak sie zastanawiam czy jest sens wpisywac wszelkie ograniczenia dla pol
> np.
> CREATE TABLE employee (
> emp_id serial CONSTRAINT pk_emp_id PRIMARY KEY,
> emp_fname varchar(12) NOT NULL CONSTRAINT emp_fname_not_empty CHECK
> (emp_fname <> ''),
> emp_lname varchar(15) NOT NULL CONSTRAINT emp_lname_not_empty CHECK
> (emp_lname <> ''),
> emp_department char(3) NOT NULL CONSTRAINT emp_department_not_empty
> CHECK (emp_department <> '') CONSTRAINT fk_emp_department REFERENCES
> departments(dep_code),
> CONSTRAINT employee_fname_lname_unique UNIQUE(emp_fname, emp_lname)
> );
>
> czy nie wystarczy samo NOT NULL wszędzie.

Z pewnego punktu widzenia NOT NULL można traktować jak inne
ograniczenia, bo pewnie aplikacja i tak będzie nie dopuszczać do
wstawiania pustych wartości.

> O ile z fname i laname to sprawa jest dosc jasna ze powinno pewnie tak
> byc to z emp_department juz nie. Jak widac jest tam referencja do innej
> relacji. Jak bedzie interfejs zrobiony to bedzie sie ten department
> wybierac z listy rozwujanej i nie da sie nic innego wybrac. Tak wiec czy
> potrzebne, albo czy wlasciwe jest dodawanie ogfraniczenie ze nie moze
> byc puste to pole? NOT NULL musi byc bo zawsze ma byc tam cos podane. i

Używanie ograniczeń na poziomie bd może (ale nie musi :-() chronić dane
przed błędami interfejsu, bądź błędnymi modyfikacjami wykonywanymi spoza
tego interfejsu.

Z drugiej strony różne zmiany trzeba wprowadzać i w GUI i w bazie danych.

Dlatego chyba nie ma jednoznacznej odpowiedzi na Twoje pytanie.

--
Grzegorz Gruza
Odpowiadając usuń "spamerom_nie." z adresu!!!
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    =?iso-8859-2?q?Kr=F3tkie_pytanie_-_PostgreSQL_8=2E2=2E2_i_CREATE_ASSERTION?= db2 alter table alter column set default [mssql] losowe (?) bledy przy create users problem z "create view" i "distinct" w postgresql 8 CREATE USER/GRANT w procedurze Oracle'a? Klucz złożony - prosba o wzor create [oracle] create view, order by, with read only ? [oracle] create user, domena windows Oracle 10g Create procedure MS Access CREATE GRUP
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • ets2.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com