kłopot z kluczem obcym

0

Witam stworzyłem bazę danych i mam mega problem z kluczami i sprawieniem by była ona funkcjonalna
czy mogłby ktoś pomóc i coś doradzić
baza dotyczy inwentaryzacji w zakladach

if DB_ID ('InwenturaP') is null
create database InwenturaPJarek
 
if object_id ('Komputery', 'U') is null
create table Komputery
(
grupa varchar(4),
numer text,
pomieszczenie varchar(25),
zakupil int,
uwagi text,
)
if object_id ('SrodkiTrwale', 'U') is null
create table SrodkiTrwale
(
grupa varchar(4),
numer text,
pomieszczenie varchar(25),
zakupil int,
uwagi text,
)
if object_id ('meble', 'U') is null
create table meble
(
grupa varchar(4),
numer text,
pomieszczenie varchar(25),
zakupil int,
Uwagi text,
)
if object_id ('Pracownicy', 'U') is null
create table Pracownicy
(
zaklad_id int,
Id_pracownika int,
imie varchar (15),
Nazwisko varchar (25),
stanowisko varchar (25),
 
)
if object_id ('Zaklady', 'U') is null
create table Zaklady
(
Id_zakladu int identity (1,1) ,
nazwa_zakladu varchar(20),
imie_kierownika varchar (15),
Nazwisko_kierownika varchar (25),
sygnatura_zakladu varchar (25),
--CONSTRAINT Id_zakladu REFERENCES Pracownicy (zaklad_id),
)
--CONSTRAINT nazwa_klucza_obcego
--FOREIGN KEY `nazwa_kolumny2`
--REFERENCES `nazwa_tabeli`(`nazwa_kolumny3`)
 
--Wstawianie danuch do odpowiednich tabel
--INSERT INTO Zaklady
--(nazwa_zakladu, imie_kierownika, Nazwisko_kierownika, sygnatura_zakladu)
--VALUES ('Atomistyka', 'Jan', 'Kowalski', 'Z-1')
 
--wyswietlanie 
--select * from Zaklady
0

Na wstępie kilka uwag dotyczących samego pisania na forum: stosuj formatowanie składni będzie nam łatwiej analizować kod. Kolejna rzecz dokładnie opisuj w czym jest problem bo z podanego kodu ja przynajmniej nie jestem w stanie zdiagnozować jaki problem u ciebie występuje. Po trzecie stosuj tagi podając np nazwę dystrybucji (postgresql, orarcle, mysql itp.) co rozwieje wszelkie wątpliwości.

Co do samego posta to nie wiem jak ty ale ja w każdej tabeli zawsze mam unikalny klucz główny nawet jeśli tabela ma tylko 1 rekord to i tak daję klucz główny unikalny i ustawiany automatycznie z sekwencji. Jak zachodzi np potrzeba dodania kolejnego rekordu to jest dużo łatwiej ponadto późniejsze złączenia tabel zawsze są po numerze i nie ma problemów np z wyszukiwaniem (może inni mają inny pogląd na tą sprawę ale działam tak od wielu lat i nikt nigdy nie uważał tego za błąd).

Jeżeli pytasz np o składnie jak założyć to najlepiej ściągnij sobie jakieś fajne narzędzie ja używam rozwiązań firmy EMS http://www.sqlmanager.net/ mają też wersje freeware. Do oracle wyjątkiem jest http://orbada.sourceforge.net/html/www_orbada_doc.html gdyż napisał ją mój kumpel i posiada wszystko to czego potrzebuję do oracle, a czego w standardzie i innych darmowych aplikacjach nie ma.

Zastosuj się do powyższych i zobaczymy co się da zrobić.

0

Dzięki za wskazówki jak tu pisać ;)
tak więc zacznę od nowa
w sql Managment studio 2012 tworze baze danych
mam jednak ogromny kłopot gdyż nieradzę sobie z tworzeniem kluczy by baza była funkcjonalna

ostatnie akapity to moja próba zrobienia relacji jeden do wielu, no ale i tak nie poszło
czy mogłbny ktoś pomóc mi stworzyć połączenie tabel przy pomocy kluczy
by
w zakładzie mogło być wielu pracowników ( tą relację próbowałem stworzyć )

if DB_ID ('InwenturaP') is null
create database InwenturaP
 
if object_id ('Komputery', 'U') is null
create table Komputery
(
grupa varchar(4),
numer text,
pomieszczenie varchar(25),
zakupil int,
uwagi text,
)
if object_id ('SrodkiTrwale', 'U') is null
create table SrodkiTrwale
(
grupa varchar(4),
numer text,
pomieszczenie varchar(25),
zakupil int,
uwagi text,
)
if object_id ('meble', 'U') is null
create table meble
(
grupa varchar(4),
numer text,
pomieszczenie varchar(25),
zakupil int,
Uwagi text,
)
if object_id ('Pracownicy', 'U') is null
create table Pracownicy
(
zaklad_id int,
Id_pracownika int,
imie varchar (15),
Nazwisko varchar (25),
stanowisko varchar (25),
 
)
if object_id ('Zaklady', 'U') is null
create table Zaklady
(
Id_zakladu int identity (1,1) ,
nazwa_zakladu varchar(20),
imie_kierownika varchar (15),
Nazwisko_kierownika varchar (25),
sygnatura_zakladu varchar (25),
--CONSTRAINT Id_zakladu REFERENCES Pracownicy (zaklad_id),
)
--CONSTRAINT nazwa_klucza_obcego
--FOREIGN KEY nazwa_kolumny2
--REFERENCES nazwa_tabeli(nazwa_kolumny3)
 
--Wstawianie danuch do odpowiednich tabel
--INSERT INTO Zaklady
--(nazwa_zakladu, imie_kierownika, Nazwisko_kierownika, sygnatura_zakladu)
--VALUES ('Atomistyka', 'Jan', 'Kowalski', 'Z-1')
 
--wyswietlanie 
--select * from Zaklady
1
CREATE TABLE Zaklady
(
Id_zakladu INT IDENTITY (1,1) PRIMARY KEY,
nazwa_zakladu VARCHAR(20),
imie_kierownika VARCHAR (15),
Nazwisko_kierownika VARCHAR (25),
sygnatura_zakladu VARCHAR (25)
)

CREATE TABLE Pracownicy
(
Id_pracownika INT IDENTITY (1,1) PRIMARY KEY,
zaklad_id INT REFERENCES Zaklady (zaklad_id),
imie VARCHAR (15),
Nazwisko VARCHAR (25),
stanowisko VARCHAR (25)
)

EDIT: Sorry, pomyliłem tabele przy kluczu

0

Wielkie dzięki Kolego

0

witam nadal walcze i juz koncze bazę ;) ale wyświetla mi się błąd którego nierozumiem

Msg 8135, Level 16, State 0, Line 16
Table level constraint does not specify column list, table 'Pracownicy'.

na stronie sqleverybody znalazlem takie tłumaczenie Tworząc klucz podstawowy klucz obcy, jak i ograniczenia, wystąpił następujący błąd ..

Ograniczenie poziomu Tabela nie określa listę kolumn, tabela "tablename".

Znaczenie:
Nazwa kolumny lub listy Kolumna nie przeznaczonych do ograniczeń. is stosując się do zaleceń niewidzę błędu czy ktoś coś tu widzi?

if DB_ID ('InwenturaPJarek') is null
create database InwenturaPJ



if object_id ('Zaklady', 'U') is null
create table Zaklady
(
Id_zakladu int identity (1,1) primary key,
nazwa_zakladu varchar(20),
imie_kierownika varchar (15),
Nazwisko_kierownika varchar (25),
sygnatura_zakladu varchar (25),
)
if object_id ('Pracownicy', 'U') is null
create table Pracownicy
(
zaklad_id int references Zaklady (Id_zakladu),
Id_pracownika int IDENTITY(1,1), primary key,
imie varchar (15),
Nazwisko varchar (25),
stanowisko varchar (25),

)

if object_id ('Komputery', 'U') is null
create table Komputery
(
grupa varchar(4),
numer text,
pomieszczenie varchar(25),
zakupil int references Pracownicy (Id_pracownika),
uwagi text,
)
if object_id ('SrodkiTrwale', 'U') is null
create table SrodkiTrwale
(
grupa varchar(4),
numer text,
pomieszczenie varchar(25),
zakupil int references Pracownicy (Id_pracownika),
uwagi text,
)
if object_id ('meble', 'U') is null
create table meble
(
grupa varchar(4),
numer text,
pomieszczenie varchar(25),
zakupil int references Pracownicy (Id_pracownika),
Uwagi text,
)

--Wstawianie danuch do odpowiednich tabel
--INSERT INTO Zaklady
--(nazwa_zakladu, imie_kierownika, Nazwisko_kierownika, sygnatura_zakladu)
--VALUES ('Atomistyka', 'Jan', 'Kowalski', 'Z-1')

--wyswietlanie 
select * from Zaklady
0

Id_pracownika INT IDENTITY(1,1), PRIMARY KEY,
wywal zbędny przecinek

1 użytkowników online, w tym zalogowanych: 0, gości: 1