emkiset.ru

Hoe een relationeel gegevensmodel te maken

Heeft u de oprichting van een bedrijfsgegevensmodel toegewezen gekregen? Moet u een relationele database bouwen die terabytes aan gegevens kan bevatten?

stappen

1
Maak je nog geen zorgen over de tafels. Uiteraard maak je een database aan, en de databases (tenminste de relationele) bestaan ​​voornamelijk uit tabellen, die op hun beurt weer zijn opgebouwd uit rijen en kolommen (registers en attributen, waarvan je weet).
  • 2
    Zorgen over de relaties tussen entiteiten. Je eerste doel is om een ​​kaart te maken van de relaties die verschillende commerciële objecten zullen hebben. Het is het deel van logische modellering de Fysiek model is de praktische implementatie. Verwar beide niet en combineer ze niet.
  • De vereisten zijn moeilijk te bereiken en pijnlijk. Een getalenteerde bedrijfsanalist zou op die momenten een geschenk uit de hemel zijn.
  • 3
    Bereid je voor om een ​​oorlog alleen te voeren en wijdt je alleen aan kwaliteitsstandaardisatie. De meeste databases zijn zonde omdat hun ontwerpers lui zijn en Ze willen gewoon iets pakken. Het kan altijd later worden opgelost. Ja, natuurlijk.
  • 4
    Zodra het tijd is om de tabellen te schrijven, richt u zich op de zoekopdrachten en de soorten tabellen (postcodes, statussen, productcategorieën, enz.).). Je hebt ze nodig voor externe sleutelrelaties in de tabellen waar. Bovendien krijgt u een voorverwarming voordat u de centrale transactietabellen bereikt.
  • 5


    Als algemene regel: sla geen gegevens op die kunnen worden afgeleid uit andere velden. Als u de geboortedatum en de startdatum weet, weet u ook de leeftijd op de startdatum - neem deze leeftijd niet op in de tabel.
  • 6
    Geen NULL. Een NULL (nul) waarde vertegenwoordigt een ongedefinieerd attribuut van een identiteit. Als een entiteit een bepaald kenmerk kan hebben of niet, moet het worden gemanipuleerd door een kruistabel.
  • 7
    De tegenstrijdige NULL-waarden zijn op zichzelf nuttig om kenmerken te identificeren die nog niet door de gebruikers zijn voltooid. Dit is met name handig wanneer een gebruiker een vooraf bepaalde waarde moet selecteren om de toepassing van de juiste bedrijfsregels te bepalen. In geval 2, hoe zou u een adrestabel ontwerpen waarin adres 1 is voltooid en adres 2 niet nodig was, maar als adres 2 is voltooid, moet dit voldoen aan de commerciële regels van het veld? Natuurlijk kun je standaard een lege ruimte instellen, maar is het beter dan te weten dat de gebruiker het veld niet heeft bewerkt? Probeer een derde normale vorm op een internationaal adres ... Het is waarschijnlijk mogelijk, maar houd de complexiteit van gegevensherstructurering op een zinvolle manier in de gaten.
  • 8



    NULL / ROT NULL Controleer de databasefora en je zult zien dat het een populair onderwerp is waarbij er verdedigers zijn van de voor- en nadelen van elk forum.
  • Iedereen is het er echter over eens dat u nooit NULL-waarden in sleutelvariabelen mag toestaan. Dit zijn de velden die worden gebruikt om een ​​enkele record te identificeren, zoals het identificatienummer van de klant.
  • De NULL-school zegt dat je de NULL-waarden vrijelijk in de andere velden moet gebruiken. Het is bijvoorbeeld niet verplicht dat klanten een mobiele telefoon hebben of dat ze u het nummer geven. Het gebruik van een NULL-waarde en niets meer dan NULL is de meest efficiënte manier om te registreren dat er geen mobiele telefoon beschikbaar is.
  • Als het echt belangrijk is om te weten waarom er geen waarde is, is het het beste om een ​​nieuwe variabele te introduceren die de reden aangeeft, in plaats van een extravagante code te introduceren in plaats van het mobiele telefoonnummer. Vermijd het toevoegen van dergelijke velden, omdat a) de klant niet verplicht is u de reden te vertellen waarom hij u zijn mobiele telefoonnummer niet geeft, en het ook geen goede vraag is, en hij u ook niet spontaan de reden zal vertellen, en b) niemand er ooit naar zal kijken gewoon vanwege a). Ontbrekende variabelen verspillen alleen tijd.
  • Wees voorzichtig met de variabelen yes / ro (Boolean), omdat ze over het algemeen geen NULL kunnen bevatten. Daarom bevatten ze meestal nutteloze informatie, zoals hij was een Republikein, of hij weigerde te antwoorden.
  • 9
    Maak uzelf vertrouwd met de gekruiste tafels (veel te veel). Je zult ze overal gebruiken, als je de dingen goed doet. Een voorbeeld is een database van een school met een tabel voor leerkrachten en een school voor leerlingen. Studenten hebben meer dan één docent en docenten hebben meer dan één student, dus de gekruiste tabel, behalve die van `docenten` en `studenten`, heeft twee kolommen met externe toetsen die naar beide wijzen. De primaire sleutel zou de combinatie van die twee zijn.
  • 10
    Gebruik een goede conventie voor namen. Plaats de facturen in een tabel met de naam factuur. De producten gaan erin product. De gekruiste tafel zou zijn Productfactuur, of productFectuur, afhankelijk van welke tabel het ware centrum van de relatie is.
  • 11
    Als u records repliceert of verzendt, probeert u deze tijdens het ontwikkelen te configureren om te zien hoe deze werkt.
  • 12
    De interne vakbonden zijn erg goed, maar waarschijnlijk zijn er ook veel verklaringen van EXTERNE BUITENUNITS die kunnen werken. Wen aan de verschillende verklaringen van vakbonden (behalve UNION).
  • 13
    Als je te maken hebt met een overgeërfde applicatie, bouw je je schema hier onafhankelijk van op (kijk er niet eens naar). Concentreer u op de regels en zakelijke relaties die u probeert uit te voeren, maar u kunt worden afgeleid als u kijkt naar hoe iemand anders het heeft opgezet. Zie stap # 4.
  • 14
    Het is moeilijk om te migreren van een overervingssysteem naar een strakkere model met een passende normalisatie, maar het kan een beetje gemakkelijker worden gemaakt als tijdelijke tabellen worden gebruikt voor import. Bovendien houdt het tabbladen bij overerving-id`s bij zodat mensen ernaar kunnen zoeken.
  • tips

    • Verwacht niet dat replicaties, opnames of reflecties werken als je naar productie gaat. Ontwikkel en test vanaf het begin. Maak het een deel van uw toepassing.
    • Er zijn enkele zeer specifieke gevallen waarin u tabellen moet de-normaliseren om prestatieredenen. Maar dat is gemakkelijk om te doen - focus op het harde deel, dat is om een ​​correcte normalisatie te creëren.
    • De flexibiliteit en kracht van een relationeel model zijn verrassend in vergelijking met de vlakkere structuren.
    • Omdat je absolute relaties definieert, is een goede manier om vragen te krijgen van onwillige deelnemers om dingen te formuleren zoals Dus is het absoluut waar dat er maar één klant op één factuur kan zijn? Zulke vragen hebben de neiging om een ​​reactie bij mensen op te roepen.
    • Met betrekking tot de relaties van entiteiten kan een klant bijvoorbeeld veel telefoonnummers hebben. De klant kan ook veel contacten hebben en elk van hen heeft veel telefoonnummers. Maar een factuur kan alleen aan een klant worden gekoppeld. Er is een accountvertegenwoordiger die aan een klant kan worden toegewezen, behalve in bepaalde gevallen waar er twee zijn, enz. Dit zijn de soorten dingen die u moet definiëren voordat u een regel sql-code schrijft.
    • Verlaat de s buiten de tabelnamen (tabel factuur) - het is duidelijk dat aangezien het een database betreft, er waarschijnlijk meer dan één factuur in zit.
    • Back-upkopieën zijn ook belangrijk in de ontwikkeling. Zorg ervoor dat je er minstens elke nacht een doet. Controleer ze elke week om ervoor te zorgen dat u geen maanden werk verliest (en waarschijnlijk ook uw werk) in het geval er een enorme hardwarefout is.

    waarschuwingen

    • Als u probeert code op te slaan (NULL-waarden, de-genormaliseerde tabellen om de verkeerde redenen), zijn er directe en echte gevolgen (wezen, toewijding aan de integriteit van de gegevens, vakbonden die niet werken, enz.).
    • Datamodellering is een kritische vaardigheid en er zijn maar weinig mensen die relationele databases op de juiste manier bouwen.
    • Sla geen code op omdat het gemakkelijker voor u is. Als ze iets nutteloos willen, moeten ze iemand anders hebben ingehuurd.
    • Als u niet op de juiste manier normaliseert, zijn de rapporten uit de database totaal incorrect en uw baas zal heel boos zijn.
    Delen op sociale netwerken:

    Verwant
    Hoe een inventarisdatabase in Access te makenHoe een inventarisdatabase in Access te maken
    Hoe een database in MySQL te makenHoe een database in MySQL te maken
    Hoe een database in Excel te makenHoe een database in Excel te maken
    Hoe een database in SQL Server te makenHoe een database in SQL Server te maken
    Hoe een tabel in MySQL te makenHoe een tabel in MySQL te maken
    Hoe een E R-diagram te tekenen met de MySQL-databasemanagerHoe een E R-diagram te tekenen met de MySQL-databasemanager
    Hoe een query uitvoeren in MS Access 2007Hoe een query uitvoeren in MS Access 2007
    Hoe herhaalde records in Excel 2007 te verwijderenHoe herhaalde records in Excel 2007 te verwijderen
    Hoe een MySQL-database te verwijderenHoe een MySQL-database te verwijderen
    POJO-klassen en XML-toewijzingen genereren met Hibernate vanuit databasesPOJO-klassen en XML-toewijzingen genereren met Hibernate vanuit databases
    » » Hoe een relationeel gegevensmodel te maken
    © 2021 emkiset.ru