sql >> Database teknologi >  >> RDS >> Oracle

Skal jeg slette eller deaktivere en række i en relationsdatabase?

Ikke at slette vil skabe en ny klasse af fejl til alle fremtidige forespørgsler. Glem ikke, at forespørgselsskrivning ofte udføres af superbrugere (dvs. ikke-it-professionelle) og juniorudviklere. Så nu vil hver tabel, der kun har ugyldige data markeret med et aktivt BIT-flag, have brug for en ekstra AND i WHERE-sætningen for hver forespørgsel fra nu og til evig tid. Dette vil hjælpe brugerne med at falde i brønden af ​​fiasko i stedet for brønden af ​​succes. Jeg vil dog kraftigt opfordre dig til at implementere disse flagsystemer alligevel, for uden dårligt design er der ikke behov for vedligeholdelsesudviklere til at rette de mange fejl, det vil skabe.

Hvor værdifuldt er det at have historiske data i tabellen? Hvis virksomheden ser fremadrettet, kan det kun være en byrde at have gamle data i tabellerne - det forårsager problemer, når du opretter begrænsninger (alle begrænsninger skal ændres for at udelukke data, du ønsker ikke var der). Kvalitetssikring af data er kompliceret ved konstant at skulle genidentificere, hvad der er "gammelt lort, vi er bange for at slette, men aldrig nogensinde vil bruge eller opdatere igen" og nye ting, vi holder af.

Bliver det slettet, fordi det var en fejl? Hvis rækken svarer til en enhed i det virkelige liv, er det måske interessant at beholde og sætte et "vaporized", "dødt", "forladt bygningen" flag. Hvis du ved et uheld har indsat en række, der ikke svarer til nogen entitet i det virkelige liv, er en DELETE ikke en dårlig ting. Er imaginære kunder, der aldrig har eksisteret, vigtige at have i kundebordet?

Og endelig spiller personligheden en stor rolle. Folk kan også være packrats med data. Hvis en DBA beholder alle sine aviser fra 30 år tilbage og ikke kan lide at slette data, burde han måske sikre sig, at han træffer beslutninger om datadesign baseret på fordelene og ikke en irrelevant personlig præference.



  1. Vedligeholdelse af orden i MySQL IN-forespørgsel

  2. Hvorfor bruge Vælg Top 100 procent?

  3. Udfør denne timers forespørgsel i PostgreSQL

  4. Baggrundsprocesser