Toon posts:

[c] dbms maken, tabel gegevens opslaan

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi

Wij hebben een opdracht voor school om een dbms te maken, dit omvat een zeer simpel dbms waarmee een database gemaakt kan worden.
Binnen deze database moeten tabellen gemaakt kunnen worden. Deze tabellen hebben een relatie met elkaar, dat wil dus zeggen een foreign key (wordt niet op gecontroleerd, moet de gebruiker zelf doen).
We zijn al een tijdje bezig om uit te vinden hoe we de tabel gegeven opslaan. De docent is hier heel vaag over en wil verder niets vertellen over hoe het moet (vrijdag spreken we hem weer, en dan gaan we er dieper op in maar alleen als wij al heel deel op weg zijn). Hij heeft alleen vertelt dat het met liniare lijsten kan maar verder niet verteld hoe.

Wij zitten nu dus nog steeds met het probleem van hoe kunnen we dit het beste / makkelijkste doen.

We hebben tot nu toe dit.
We gaan de gegevens opslaan in binaire bestanden zodat de gegevens na afsluiten nog beschikbaar blijven.
Bij het lezen van gegevens zullen alle records in het geheugen gezet worden dmv een liniare lijst. (comp heeft 64 mb geheugen, dus genoeg). In deze lijst kunnen we zoeken en elementen verwijderen en wijzigen. Het inlezen zal niet moeilijk zijn.

Een tabel moet gemaakt kunnen worden. Deze tabel bestaat uit een (onbeperkt) aantal kolommen (bv naam, adres en woonplaats) voor elke kolom kan er voor het type string of integer gekozen worden. Het inlezen van deze gegevens vormt geen probleem. De gegevens moeten in een liniare lijst gezet worden zodat deze gebruikt kan worden als tabel (de docent gaf aan dat we daarmee moesten gaan werken). Vanaf hier weten we niet meer hoe we dit kunnen oplossen en gebruiken en hoe we de foreign key's kunnen toepassen. Hebben jullie nog een idee.


ps.
we vragen dus niet of jullie het willen maken (zou wel makkelijk zijn, maar willen we niet). Aan goede duidelijke aanwijzigen hebben we (voorlopig) genoeg. De implementatie hoeft ook nog niet gemaakt te worden (volgende week ofzo pas al)
(als dit toch hier niet mag, sluit dan maar. post opgesteld via de aanwijzingen in de faq)

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Pittige opdracht >:)
Allereerst, moet het persé in C zijn, of is C++ ook goed?

Verder merk je al op dat je zelf niet de integriteit van foreign keys hoeft te bewaken. Een foreign key is dan niet meer dan een denkbeeldige relatie. In feite hoef je dit helemaal niet op te slaan. De relaties tussen de tabellen worden duidelijk uit de query die je erop loslaat.
Maar over queries gesproken ... moet je die ook implementeren? Zoja, dan zou het best weleens ingewikkeld kunnen worden.

Welke school doe je?

Verwijderd

Topicstarter
het moet c, en moet onder unix draaien (doet bijna alles). Het is de haagse hoge school, (sommige docenten vinden de opdracht ook te moeilijk maar toch)

de select zal simpel zijn, dus alle gegevens, met 1 where critirum

dus iets van
select * from klant where klantnaam = jan
of
select * from klant where klantnaam <> jan

en hij wil ook een kolom naam kunnen opgeven (1tje maar, in eerste instantie, later meerdere (als we 1 kunnen moet meerdere ook wel lukken))

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Erg vreemde opdracht: als je een DBMS wilt gaan maken of aan het maken daarvan wilt proeven kan je beter datgene wat je doet ook goed doen en dus de literatuur bestuderen. Zomaar zelf wat aanrommelen is eigenlijk wel erg onzinnig gezien de enorme vracht literatuur op dit gebied (sorry dat ik het zeg).

Als je dit serieus wilt gaan aanpakken kan je dus beter een boek aanschaffen en daarin nagaan hoe je data-elementen representeert op de harde-schijf, wat je in het geheugen zou kunnen doen en welke data-structuren je daar kunt gebruiken, hoe je SQL omzet naar relationele algebra, hoe je van deze relationele algebra een query-plan maakt en hoe je de query ook daadwerkelijk gaat uitvoeren. Je kunt alles wel zelf gaan verzinnen, maar je komt dan waarschijnlijk op incomplete, niet optimale of zelfs incorrecte oplossingen. Je moet bij zoiets toch echt wel uitgaan van de kennis die anderen al voor je hebben vergaard.

Een ad-hoc oplossing gaat echt tot niets leiden en je moet echt de basis-theorie bestuderen voordat je een 'dbms' kunt maken. Ik laat dan het verhaal over indexes, optimalisatie van queries en andere lastige stuff zelfs nog maar even weg...

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
nantasquad: en hij wil ook een kolom naam kunnen opgeven (1tje maar, in eerste instantie, later meerdere (als we 1 kunnen moet meerdere ook wel lukken))
Tja sorry, maar dit slaat toch echt alles. Het select gedeelte van een SQL query implementeer je typisch met een projectie in relationele algebra. Of je dan 1 of 10 zaken opgeeft maakt helemaal niets uit: of je implementeert het, of je implementeert het niet...

Deze opdracht heeft echt totaal geen nut als je niet uitgaat van de in de literatuur beschreven technieken. Het klinkt wellicht allemaal erg ingewikkeld en over-kill, maar het stuurt je juist richting een duidelijke en component-georienteerde aanpak...

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
hohoho, jullie denken allemaal veel te moeilijk. we hebben pas 1 vak met c gehad en die moeten we toepassen. Het is een hele simpele dbms. de statements staan dus ook van te voren vast.

heb ook nog ff zitten nadenken over de primary key. Makkelijkste is gewoon de eerste kolom als primairy te nemen (altijd maar 1 primary key dus) weet niet hoe de docent dat ziet.
De statements enzo komen later nog wel. We moeten eerst weten hoe we de tabellen kunnen maken, op dit moment komen we daar nog niet uit. Als we eenmaal een tabel kunnen maken dan kunnen we hem ook vullen, en wegschrijven naar de hd.

als boek hebben we al kelley en ira pohl. De prgrammeertaal c. Hebben we nog niet veel in kunnen vinden, maar is ook wel aardig dik boek. We zijn ook nog aan het zoeken op internet, maar daar gaan ze bijna altijd veel te ver.
Pagina: 1