Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "database diagram"
-
Worst experience with cs profs? Oh boy....
Databases lab: "You'll need to work of this snippet, if your IDE tells you it's deprecated you don't need to care about it"
If you want to imagine the quality of the code base we were expected to work upon just think about that attached xkcd comic, basically an undecipherable black box.
The instructions where at the same time micro managing everything (he gave us frickin variable names to use, and no good ones, no the database connection had to be called datbc, yeah very descriptive) and yet so obfuscated that I'm not completely sure he didn't resurrect Kant himself to ghostwrite for him.
He also didn't like us to use any Java feature that was to 'modern', for example for each loops since "they offer no benefit over normal for loops".
Further, everything we wrote had to be documented with a relationship diagram and a uml. So far no problem if he hadn't invented his own flavor of both (which can be read about in his book).
Oh, and he almost failed me because I used a lambda expression in his 'code on paper' exam and this "arrows are a C command" I "must have been confused"... which is glorious coming from the guy who can't get operators and commands straight.1 -
> people who think design is graphic design
me: "i just designed this database for-"
normie: "hah! designed? so you changed table colors in a diagram or what."5 -
Customer: "Yeah we need <insert bonkers 12 step circular logic> to find a thing(s) in the database."
Me: "Ok let me diagram this out and I'll send it to you to review.... but man this seems like the 8th version of this we're doing right?"
Customer: "Yeah well <employee Y> says they can't do B, C without this."
Me: "Wait... can't they just <insert the most simple step in the history of time> in step A, and then later on they won't have to do all this hunting later? Like you have that data at step A right?"
Customer: "Yeah but <employee Y> doesn't want to do that."
Me: "She's your direct report ....."
Customer: "Yes...."
Me: "Ok.... I'll send you the diagram and the cost estimate...."
Whatever reason sometimes it is a bit draining coding madness compared to making things actually efficient / people's jobs easier...3 -
Cannot believe I am paying for a course with a lecturer that doesn't even teach the students what a foreign key is, or the concept of a join table to breakdown many-to-many relationships in a database. Literally telling me "If thats how you interpreted it, it's ok to add that in, but you dont have to." In relation to adding a new entity into the ER Diagram as a join table.
It isn't up for interpretation, you are literally joining tables based on foreign keys that will create duplication and make no sense. I mean, you are teaching people who have likely never worked with DB's before... you cannot teach them this. 🤦♀️1 -
when you're at a job interview, the interviewer shows you some code to give you a taste and the first thing that comes to mind is, "how long is it gonna take to refactor and is it worth it..."
then proceeds on to show a database diagram and its an unholy cluttered spaghetti soup that even a purple octopus would feel a cold shiver from..
then the interviewer mentions the previous dev left suddenly and the deadline is very soon(TM?)..1 -
Ok now I'm gonna tell you about my "Databases 2" exam. This is gonna be long.
I'd like to know if DB designers actually have this workflow. I'm gonna "challenge" the reader, but I'm not playing smartass. The mistakes I point out here are MY mistakes.
So, in my uni there's this course, "Databases 2" ("Databases 1" is relational algebra and theoretical stuff), which consist in one exercise: design a SQL database.
We get the description of a system. Almost a two pages pdf. Of course it could be anything. Here I'm going to pretend the project is a YouTube clone (it's one of the practice exercises).
We start designing a ER diagram that describes the system. It must be fucking accurate: e.g. if we describe a "view" as a relationship between the entities User and Video, it MUST have at least another attribute, e.g. the datetime, even if the description doesn't say it. The official reason?
"The ER relationship describes a set of couples. You can not have two elements equal, thus if you don't put any attribute, it means that any user could watch a video only once. So you must put at least something else."
Do you get my point? In this phase we're not even talking about a "database", this is an analysis phase.
Then we describe the type dictionary. So far so good, we just have to specify the type of any attribute.
And now... Constraints.
Oh my god the constraints. We have to describe every fucking constraint of our system. In FIRST ORDER LOGIC. Every entity is a set, and Entity(e) means that an element e belongs to the set Entity. "A user must leave a feedback after he saw a video" becomes like
For all u,v,dv,df,f ( User(u) and Video(v) and View(u, v, dv) and feedback(u, v, f) ) ---> dv < df
provided that dv and df are the datetimes of the view and the feedback creation (it is clear in the exercise, here seems kinda cryptic)
Of course only some of the constraints are explicitly described. This one, for example, was not in the text. If you fail to mention any "hidden" constraint, you lose a lot of points. Same thing if you not describe it correctly.
Now it's time for use cases.
You start with the usual stickman diagram. So far so good.
Then you have to describe their main functions.
In first order logic. Yes.
So, if you got the point, you may think that the following is correct to get "the average amount of feedback values on a single video" (1 to 5, like the old YT).
(let's say that feedback is a relationship with attribute between User and Video
getAv(Video v): int
Let be F = { va | feedback(v, u, va) } for any User u
Let av = (sum forall f in F) / | F |
return av
But nope, there's an error here. Can you spot it (I didn't)?
F is a set. Sets do not have duplicates! So, the F set will lose some feedback values! I can not define that as a simple set!
It has to be a set of couples, like (v, u), where v is the value and u the user; this way we can have duplicate feedback values in our set.
This concludes the analysis phase. Now, the design.
Well we just refactor everything we have done until now. Is-a relations become relationships, many-to-many relationships get an "association entity" between them, nothing new.
We write down on paper every SQL statement to build any table, entity or not. We write down every possible primary key or foreign key. The constraint that are not natively satisfied by SQL and/or foreign keys become triggers, and so on.
This exam is considered the true nightmare at our department. I just love it.
Now my question is, do actually DB designers follow this workflow? Or is this just a bloody hard training in Pai Mei style?6 -
This is the link that has brought me the most joy acceleration in my life.
Go see what it does yourself.
I love adminer so much.
Hyper recommended.
Screw MySQL Workbench.
(this rant was saved since that day images stopped working, good job guys)3 -
I HATE WINDOWS' WINDOW MANAGEMENT. I have two monitors and nothing can be maximized. Windows' spaces are terrible as well.
I am building in the back end in VS Code.
I have three terminals open because I need them to run multiple parts of the app locally.
I have postman open to try requests.
I have firefox for the orm system's documentation.
I have my database tool running as well.
I have an ERD diagram floating in a window.
I have another VS Code window showing a diff of my JSON compared to the version I'm replacing.
Also all of my team communication tools.
I have never hated shuffling windows around so much. Would it kill us to use some command line tools for http instead of Postman? Could we please get a decent shell in windows? Could we get some simple ways to switch between virtual desktops? Click click click. I can't automate clicking. Why do we use the most clicky tools we can find?17 -
I just want to burst out how i feel, after that I'll be back to my project in ElectronJS, so bear with my story :)
I observed from a friend of mine....
October will be their 2nd take Thesis project... same project, the only thing is they purchased the software and never understood any of the code. At the defense(Last Tuesday) they were caught, they made excuses. Database diagram that has many tables that are not connected, and only 1 "Many-to-many" relationship without associative table.
I know from the beginning that "she" will fail over and over until the time she really needed my help... She kept her pride, knowing that she is capable of being independent...
To be frank, It's really hard to become an independent person, I always ask advice for revising my code, explaning this function and many more. I'm not saying that its a karma for her. Let her lesson be learned from these past years. -
Asked to map the old database into a diagram. Looks like someone threw up spaghetti. It is so full of tables named "obsolete" I don't understand!
-
I cant wrap my head around designing a database system from scratch. Period.
I use ER diagrams to do it. But still i can't figure this piece of shit out.
It usually goes in these steps:
1) i design a very simple minimal system, turns out it works but HELL NO how unsalable it is. Literally its so statically built that i have to redesign the whole infrastructure and models from scratch
2) i redesign from scratch but this time i overengineer it. Overcomplex as fuck. So complex i get lost easily and have to redesign the whole shit all over again this time copying others similar infrastructure with help of chatgpt
3) chatgpt of course fucks everything up even more to the point that my shit can't compile anymore. Fuck this shit
I think i lack the correct way of thinking and approaching this. College has taught me bullshit and confused me even more which is why im so fucking lost. Can someone explain me How to think in the correct mentality when designing an ER database system from scratch.
How do i properly design a scalable database infrastructure as ER diagram for a subscription and chatting models, similar to onlyfans infrastructure?9