Esialgne ja optimeeritud ER-diagramm (draw.io)

1. Loo projekt ja joonista diagrammid

Mitte optimeeritud diagramm:

AI-le esitatud prompt

create database veebipood
use veebipood

CREATE TABLE Kategooria (
    kategooria_id INT PRIMARY KEY,
    nimetus VARCHAR(50) NOT NULL
);

CREATE TABLE Kasutaja (
    kasutaja_id INT PRIMARY KEY,
    e_post VARCHAR(100) NOT NULL,
    parool VARCHAR(255) NOT NULL,
    roll VARCHAR(10) CHECK (roll IN ('jah', 'ei'))
);

CREATE TABLE Toode (
    toode_id INT PRIMARY KEY,
    nimetus VARCHAR(100) NOT NULL,
    hind DECIMAL(10,2) CHECK (hind > 0),
    kategooria_id INT,
    FOREIGN KEY (kategooria_id) REFERENCES Kategooria(kategooria_id)
);

CREATE TABLE Tellimus (
    tellimus_id INT PRIMARY KEY,
    kuupaev DATE NOT NULL,
    staatus VARCHAR(20),
    kasutaja_id INT,
    FOREIGN KEY (kasutaja_id) REFERENCES Kasutaja(kasutaja_id)
);

CREATE TABLE Tellimus_Toode (
    tellimus_id INT,
    toode_id INT,
    PRIMARY KEY (tellimus_id, toode_id),
    FOREIGN KEY (tellimus_id) REFERENCES Tellimus(tellimus_id),
    FOREIGN KEY (toode_id) REFERENCES Toode(toode_id)
);

Optimeeritud diagramm:

Diagrammide võrdlus ja kokkuvõte

  • Mida AI muutis: AI parandas seosed ja lisas mitu-mitmele (M:N) seose lahendamiseks vahetabeli Tellimuse_Rida. Samuti määrati korrektselt primaar- (PK) ja välisvõtmed (FK).
  • Milliseid olemid/atribuute lisati: Lisati vahetabel Tellimuse_Rida atribuutidega kogus ja hind.
  • Kas muudatused olid põhjendatud: Jah, sest ilma vahetabelita poleks võimalik korrektselt salvestada mitme toote ostmist ühe tellimuse raames.
  • Mida edaspidi arvestada: Tuleb alati silmas pidada olemitevahelisi seoseid (1:M ja M:N) ning määrata vajalikud piirangud (NOT NULL, CHECK, UNIQUE) juba varases faasis.

2. Andmebaasi loomine SQL Serveris

Andmebaas nimega veebipood loodi järgmise SQL-skripti abil, mis sisaldab vajalikke piiranguid (PRIMARY KEY, FOREIGN KEY, CHECK, NOT NULL):

create database veebipood
use veebipood

CREATE TABLE Kategooria (
    kategooria_id INT PRIMARY KEY,
    nimetus VARCHAR(50) NOT NULL
);

CREATE TABLE Kasutaja (
    kasutaja_id INT PRIMARY KEY,
    e_post VARCHAR(100) NOT NULL,
    parool VARCHAR(255) NOT NULL,
    roll VARCHAR(10) CHECK (roll IN ('jah', 'ei'))
);

CREATE TABLE Toode (
    toode_id INT PRIMARY KEY,
    nimetus VARCHAR(100) NOT NULL,
    hind DECIMAL(10,2) CHECK (hind > 0),
    kategooria_id INT,
    FOREIGN KEY (kategooria_id) REFERENCES Kategooria(kategooria_id)
);

CREATE TABLE Tellimus (
    tellimus_id INT PRIMARY KEY,
    kuupaev DATE NOT NULL,
    staatus VARCHAR(20),
    kasutaja_id INT,
    FOREIGN KEY (kasutaja_id) REFERENCES Kasutaja(kasutaja_id)
);

CREATE TABLE Tellimus_Toode (
    tellimus_id INT,
    toode_id INT,
    PRIMARY KEY (tellimus_id, toode_id),
    FOREIGN KEY (tellimus_id) REFERENCES Tellimus(tellimus_id),
    FOREIGN KEY (toode_id) REFERENCES Toode(toode_id)
);

3. Visual Studio ja Entity Data Model integreerimine

Visual Studio keskkonnas loodi projekt AndmebaasiProjekt (ASP.NET Web Application / Web Forms), kuhu lisati ADO.NET Entity Data Model andmebaasi ühendamiseks.

Täitke need väljad:

Visual Studio projekt

ADO.NET Entity Data Model skeem (.edmx)

Veebirakenduse töö kontroll

Rakendus käivitati edukalt kohalikus keskkonnas (localhost):

4. GitHubi repositoorium

Projekti lähtekood on täielikult üles laaditud GitHubi:

https://github.com/sasiski112/veebipood