Gå til innhold

Anbefalte innlegg

Hei

 

Jeg driver og lærer meg å bruke databaser for tiden. Jeg må si jeg liker det; mye enklere enn flatfiler, join() og split()!

 

Nå har jeg en database med tre tabeller. Første tabell inneholder organisasjonsnavn og -ID. Andre tabell inneholder sjefsnavn, -ID, -påloggingsopplysninger og hvilken organisasjon (org.s ID) sjefen tilhører. Tredje tabell inneholder arbeidere; navn, ID, pålogging, hvilken sjef (ID) han tilhører.

 

Så lurer jeg på; om det er femten organisasjoner med femten sjefer i hver, og femten arbeidere per sjef, så blir det 15^3 rader i den siste tabellen. Eller tenk dere enda flere; vil det etter hvert bli treigt å slå opp i den siste tabellen da? Bør jeg heller opprette en tabell per sjef, som inneholder arbeidere, slik at det blir mange små tabeller, eller er en stor best?

 

Og videre lurer jeg litt på ASP.Net-kontroller. I vanlige C#-prosjekter er det bare å slenge ut kontroller hvor som helst vha form.Controls.Add() og OnClick+=void. Går det an i ASP.Net? Jeg går ut fra det; så hvordan? Jeg vet hvordan jeg legger til knapper i designer-fila (<asp:button osv>), men hvordan gjør jeg det fra .aspx.cs-fila (og viktigst: hvordan registrerer jeg trykk på knapper jeg har lagt til herfra?)?

 

Mye tekst, men enkle spørsmål, tror jeg.

 

 

På forhånd takk,

Erlend

Lenke til kommentar
Videoannonse
Annonse

Slik jeg ser det har du en tabell for mye. Hvorfor trenger du to tabeller for noen som inneholder omtrent det samme? både en sjef og en "vanlig" ansatt er like fullt personer.

 

hva med å ha med en fk_status_id og en tabell Status som ineholder

 

Status

--------

pk_id

Status (Sjef, ansatt, osv...)

 

for å håntere klikk på en knapp bruker du jo da

 

<asp:Button ID="MyButton" runat="server" OnClick="MyFunction" />

 

og i koden:

 

protected void MyFunction(object sender, EventArgs e)
{
 //WHAT TO DO
}

Lenke til kommentar

Jeg ville gjordt dette med kun 2 tabeller:

 

Company:

* CompanyID

* CompanyName

 

Employee:

* EmployeeID

* ParentEmployeeID <-- peker tilbake på sjefen til en ansatt

* CompanyID

* EmployeeName

 

-----

 

Nestegang bør du lage 2 innlegg om du har 2 forskjellige spørsmål....

 

Du kan legge kontroller hvor som helst i ASP.Net ja (Control.AddAt(?)), men det er mye enklere å lage f.eks. <ASP:Panel> eller <ASP:PlaceHoldere>'e på siden og slenge kontrollene dine inn her. MinPanel.Controls.Add(...);...

Husk at kontrollene må initialiseres og legges til for hver postback.

Lenke til kommentar

Først og fremst er jeg enig med de andre, modelleringen er ikke helt god. Du klarer deg med to tabeller for dette hierarkiet.

 

Så lurer jeg på; om det er femten organisasjoner med femten sjefer i hver, og femten arbeidere per sjef, så blir det 15^3 rader i den siste tabellen. Eller tenk dere enda flere; vil det etter hvert bli treigt å slå opp i den siste tabellen da? Bør jeg heller opprette en tabell per sjef, som inneholder arbeidere, slik at det blir mange små tabeller, eller er en stor best?

15^3 er 3375 som er et ekstremt lavt tall i databasesammenheng. Du lager selvsagt en index eller to, men uansett er dette latterlig lavt og ikke noe problem mtp hastighet. Jeg jobber selv mot databaser som får 5-6 millioner NYE rader hver eneste dag med 10 års historikk og da må man tenke litt mer enn bare indekser. Men i ditt tilfelle trenger du ikke det.

Lenke til kommentar
Men hva om en arbeider har to sjefer; bør jeg da ha en ParentID som er string, feks "IDa|IDb" og bruke split(), eller finnes det et annet magisk triks?

 

Magisk triks :) Mange-til-mange tabell.

 

Company:

* CompanyID

* CompanyName

 

Employee:

* EmployeeID

// Fjerne denne * ParentEmployeeID <-- peker tilbake på sjefen til en ansatt

* CompanyID

* EmployeeName

 

EmployeeBoss

* EmployeeID

* EmployeeBossID

Lenke til kommentar

Ah, om du har mulighet for to sjefer stiller det seg selvsagt annerledes. Da har du plutselig et mange-til-mange forhold og da er det vanlig å ha en tabell som linker dette sammen.

 

Noe ala:

sjef
----
ansatt_id foreign key references ansatt,
sjef_id foreign key references ansatt 
primary key (ansatt_id, sjef_id)

 

EDIT: bleh. Jorn79 du er for rask! Jeg rekker jo ikke hente kaffe engang.

Endret av steingrim
Lenke til kommentar
sjef
----
ansatt_id foreign key references ansatt,
sjef_id foreign key references ansatt 
primary key (ansatt_id, sjef_id)

 

EDIT: bleh. Jorn79 du er for rask! Jeg rekker jo ikke hente kaffe engang.

 

Men vi prøver å få degheim til å slutte å bruke (ny)norske variabel navn. :cry: Det samme gjelder for databaser. Skriv engelsk!

 

Og nå skal jeg lage middag, så du kan få lov å svare i ro og mak...

Lenke til kommentar

Ja, for all del! Jeg er ferdig med nynorske variabler; databasen er på engelsk, og det er all programmeringen min også.

 

Nynorsken gikk bort sammen med VB! ;)

 

Men når jeg spør etter hjelp her snakker jeg norsk, så jeg oversatte da "user" til "arbeider", osv. Dersom du vil ha det på engelsk her også, kan du kopiere all teksten, lime den inn i Word (eller et annet program som tror det er en WYSIWYG-editor), og kjøre et "Søk og erstatt" på kolonneoverskriftene mine :D.

 

Noe nytt om IRC-serveren til Ole, da?

Endret av Degeim
Lenke til kommentar
Men vi prøver å få degheim til å slutte å bruke (ny)norske variabel navn. :cry: Det samme gjelder for databaser. Skriv engelsk!

Beklager :) Men skal jeg skrive raskt nok til å komme deg i forkjøpet må jeg ta noen snarveier. Nå hjalp det dessverre ikke denne gangen da... Skjerpings skal bli!

Lenke til kommentar

Pfft, skriv norsk. Bare i selve programmeringen ting skal være engelske :D.

 

Jeg ser forøvrig at xml kan velges som verditype, så jeg tror jeg velger det i de kolonnene der jeg skal lagre ting jeg normalt sett ville hatt i List<> eller Dictionary<>. Enklere enn mange-til-mange-database :D.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...