Open source ER diagramming tool for mysql [closed] - mysql

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 9 days ago.
Improve this question
I want to reverse engineer (import into diagram form) the database definition dump of a database I have, then since no foreign keys are defined in this particular database, I want to be able to manually create the table to table key mappings (using crow feet notation if possible).
I've taken a look at MySQL Workbench, and it gets me 85% of the way there.
The nice little relationship lines won't show up though, and the auto arrange is horrible. A quick search of google turns up several other options, so I can evaluate these on my own, but:
Can I get some feedback from you guys for which are your favorite tools to use for this scenario? Why do you like that(your) particular tool?
My intended purpose is to take a legacy database, and train jr. engineers on the organization of the DB. Visual aids are nifty. My fallback option is to recreate an ER diagram by hand. Not fun for 250+ tables.

You might check out DBDesigner ...
Now known as MySQL Workbench
http://dev.mysql.com/downloads/workbench/5.0.html

SchemaCrawler is a free, open source tool that can generate E-R diagrams, with the help of GraphViz. You can use regular expressions to select the tables and columns you want to display. Relationships are inferred from commonly used naming conventions.

I've had some success using two commercial (but relatively cheap!) tools- but I still haven't found any really solid open source ones after months of looking.
MyEclipseIDE is a subscription product, I think it's around $60 a year. It's a set of bundled plugins for Eclipse, one of them is an ERD analyzer that works OK. If you're programming in Java (or another eclipse-supported language), it may be worth it.
SQLMaestro for MySQL: This one is a bit more expensive, with a $99 noncommercial / $179 single seat license. The ERD it generates is much better, and it provides other tools that make it easier to administer and maintain a more complex schema.
My understanding is that MySQL Workbench is still under active development, but they've been banging on it for a long time without really wrapping it up. Maybe now that Sun owns them, they'll get it together.

Check out Vertabelo.
It's an online database modeler that works under Chrome browser.
It provides you with:
DB model versioning and validation,
generating SQL scripts for particular database,
supports collaboration - allows sharing DB model with other members of your team,
supports reverse enginnering.
Moreover it's free of charge.

Generate ERD with PHPMyAdmin is also a better option. PHPMyadmin added this functionality from version 3.4
detail step to generate ERD : http://goo.gl/0z3vFE
You can refer to PHPMyAdmin documentation for more info: http://www.phpmyadmin.net/documentation/#pmadb

I am using Mysql Workbench 6.1. By default the diagram will look crunched for large number of tables, making it difficult to figure out relationship between tables. Many tables will overlay on other tables. This is because, the default layout size is small.
In the menu, Go to Model >> "Diagram properties and size".
Change width and size to some thing big (for example width 23 and height 5) -
Then in the menu, Go to Arrange >> Autolayout.
Now we should see a clean diagram with all the relations. Now we can re-adjust width and height, more meaningfully

I use dbeaver which can manage mysql and many others like postgresql
Useful link :
https://dbeaver.com/docs/wiki/Database-Structure-Diagrams/

Related

SQL Server migration to mySQL, tips & potential issues? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I'm looking into whether a move from SQL Server is a viable option. To help me with this decision, I have some questions:
Is it possible to use asp.net membership on a MySQL server ?
Are there many/any useful tools to migrate tables/databases/etc and which ones are the best?
What are the Main disadvantages in moving to MySQL from SQL Server?
As it stands I have a large enough project but it doesn't avail of many MS features so if it's possible I'd like to move.
My company did this a couple years ago with a pretty big project. On thing that made it easier for us is that we mostly used very plain standards compliant SQL. No Linq, no Entity Framework, only a little T-SQL, and only a few stored procedures.
As far as getting your data into MySQL, We ended up creating our own tool for doing this. None of the existing stuff including "MySQL Migration Assistant" can anywhere close to being fully functional. Once you can recreate the schema on MySQL, Getting the data back in, is a matter of exporting to CSV and importing with LOAD DATA INFILE. Tranferring the schema was actually the hardest part. With so many tables, we couldn't just do it by hand. We wrote some code in .Net by starting off using this VBScript that we found, and upgraded it to use the tools in "Microsoft.SqlServer.Management" Namespace available for .Net.
For functions that exist in SQL Server but don't exist in MySQL, such as GetDate, it's easy enough to write your own functions in MySQL that map to these functions, instead of trying to find all the instances of this stuff in the code. There are quite a few syntax differences between MySQL and SQL Server, even with just using basic SQL. For instance MSSQL allows DELETE TABLENAME WHERE ...., but MySQL insists you use DELETE FROM TABLENAME WHERE..... That's just one, there are many other differences.
Anyway, it was quite an adventure, but it worked out well for us. It is do-able, but you have to be committed, and not be afraid to write your own migration tools.
Couple of things off the top of my head.
MySQL doesn't support CHECK constraints. Usually, if your dbms does support CHECK constraints, your tables use them.
Depending on the constraint, you might be able to rewrite it in one of these ways.
As a foreign key to a new table
As a trigger
As a daily (or hourly, whatever) exception report
As a module in application code (which could be part of an exception report)
Something else I haven't thought of.
MySQL's timestamps have a resolution of one second.
Microsoft has a SQL Server Migration Assistant but, naturally, it is designed to help users move in the other direction.
You may want to check out this whitepaper from the MySQL site (you'll need to register - I did not, so I don't know how valuable the paper will be compared to the knowledge you already possess):
http://www.mysql.com/why-mysql/white-papers/mysql_wp_mssql2mysql.php
There are also some products and guides that can be found with a fairly simple search, e.g.
http://www.spectralcore.com/fullconvert/tutorials/convert-mssql-sql-server-to-mysql.php
http://www.haidongji.com/2009/02/23/moving-data-from-sql-server-to-mysql/
I don't know that the ASP.NET Membership can be ported directly to MySQL but I am confident you could replicate its functionality (it is more a question of how much effort it will take, not whether or not it is possible).

Can someone explain the concept of MySQL to me? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
First and foremost, I do understand that MySQL is used for databases, and can be used to update content on a website. What I don't understand is how you actually are able to get MySQl to change the content on a site automatically, or if it is even possible. I really am a beginner so sorry if this question comes comes as noobish. I really don't understand the concept of MYSQL all that much, as I don't understand how websites are able to change the content on their main page daily using MYSQL, Now what I am saying is, if I were to have a website with new information every single day on the main page, and used Mysql as a database, would it be possible to upload for example 7 html files one for each day of the week,to the database, and have each of them displayed on different days, automatically? (This is all a presumption as I don't know how to get the data into a mySql database and if you upload a html file to the database) Sorry for the confusing question and thanks in advance for all the help.
As you mentioned, MySQL is just a database. You could in theory use Oracle or SQL Server or PostgreSQL, which are all MySQL's "competitors", if you will, in the database space.
What's generally done is that there is a program that sits alongside the web server on the box that reads the content from the database and then translates that content into HTML, where it's served up to you as a web page. This program is usually referred to as a Content Management System or "CMS" (You might want to Wikipedia for "Drupal", which is one popular CMS out there).
Web pages are rarely stored as whole HTML files in MySQL. Usually what's done is that the content (paragraphs of text, comments on a blog, upvotes and downvotes) are stored in some structured format, and the CMS takes that structured data from the database and presents it to you. The upshot of structuring the data in this way is that end-users who want to update content don't have to worry about coding the HTML -- they just write their content and the CMS takes care of the presentation bits.
MySQL is a database server, and doesn't have any web-related functionality built in. It's just a place to store data (though it's very good at that - it, and other relational database management systems like SQL Server and Oracle, attempt to optimize data storage and retrieval).
There's a layer between the database and the web server that you're missing - the web application framework. That's where your logic goes. If you want to display different data based on the day of the week, you'd program that in your web application:
// ludicrously simplified
if (Date.DayOfWeek = Friday)
Output "<html>TGIF!</html>"
PHP and ASP.NET are the best known languages for this kind of development.
There are a number of frameworks out there that simplify certain tasks. You can write HTML more or less directly from your code, using the languages above and the right runtimes (the ASP.NET runtime comes with Microsoft's IIS web server, and Zend is popular for PHP). Or with the right tools, you can specify the content each user sees at a very high level.
You can have some code/algorithm to rotate the news (articles) in your home page. Those articles can be inserted/stored into your MySQL database.
What I mean by rotate is that for each day a given article is retrieved from the database and shown on your homepage.
The articles can be inserted by hand on a given table in your MySQL database or they can be inserted using some kind of front end (a user form) for that purpose.
For a complete overview of MySQL, this page on Wikipedia is a good hit.
I don't know if the other answers have helped you understand, so I'll add a very simplistic answer that I hope will get you over the initial bump.
MySQL will act as an online storage space for you, but it won't provide the website.
In between MySql and the website, there will need to be a program of some sort.
There are many, many different languages and frameworks available to do this, and it's essentially the entire business of web developers to create these programs.
In your particular case, you asked about uploading different pages to MySql and having them displayed for each day of the week.
You wouldn't need to use MySQL or a database at all for this, a few lines of code in most common languages would do this for you, and adding a database would simply add complexity where it wasn't needed.

Preferred MySQL tools [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
Hi what are the preferred mysql tools with professional developers. I am a recent computing graduate and have used the query browser and administrator from mysql throughout university and i have found them to be very useful.
I start a new job in a couple of weeks though as a web developer and was wondering whether they would be exepcting me to use the command line or some other mysql tools.
What do the professional developers generally use for interacting with mysql databses i.e. creating new schemas, tables etc.
This is the tool to generate MySQL queries. There you can find MySQL generator for different commands, like drop table, create table, rename database, create database etc.
mysqladmin should be sufficient for most of the tasks if not all of them.
For windows, HeidiSQL is fantastic. It might work on Linux through Wine, but I've never tried it.
I occasionally use MySQL Workbench, as it can help speed up schema design (and the price is right). A cursory knowledge of phpMyAdmin is useful as it is often the admin tool of choice on web hosting servers. Most of the time, however, I just use the command line interface from Linux.
Understanding what goes on beneath the GUI is a very useful (dare I say essential) skill to have. Just look here on SO, where you'll find a vast number of SQL scripts that would be difficult to explain or implement if a GUI had to be factored in.
The CLI is available almost everywhere. If you ever have to work on a computer other than your own, be it on site or in your office, you can be fairly certain that CLI access will be available. The same cannot be said for your GUI of choice.
SQLyog is what I turned to after trying to use HeidiSQL. I liked HeidiSQL but I loved SQLyog. There is a free version somewhere.
Probably
Navicat
phpMyAdmin
DB Forge Studio for MySQL
For the Mac for development I use Querious. The application is very well written and supports connecting to local and remote databases.
Both of the tools you point out are good, and they would probably expect you to have some familiarity with them. Usually I will use a tool such as Query Browser or pgAdmin (for PostGreSQL) to run simple queries.
Once you have more experience you might find the command-line tools helpful as well. It's only going to help you by learning them.
For most big companies, you usually use Microsoft Visio to develop and plot the database as well as the web layout.

Teach an M.B.A. the intricacies of Microsoft SQL Server (and how's it different from MySQL?) [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 9 years ago.
Improve this question
I haven't had to interact w/MSSQL much in my development career, though I've spent many an hour working with MySQL.
An M.B.A. friend of mine is starting a job where she needs to gain functional knowledge of MSSQL Server, and I'd really like to help.
What are the differences between MSSQL and MySQL?
How would you recommend a non-technical person go about learning the ups and downs of MSSQL Server?
[update] Previous database design skills are naught. I've given her to short and long on what a database does from a high-level.
I'd love to say, "you can't". But that would be untrue (or at least mean).
If she has any background with database design at all, then this is merely a new RDBMS.
If she's never done database design, the place to start is not so much with MS SQL, but with how databases work, in my opinion.
Database Design for Mere Mortals is a good place to start. From there I'd move to an MS SQL -specific book, such as Microsoft SQL Server Unleashed.
Download the free SQL Express and start using it. Microsoft also has several video tutorials that would be helpful. They start pretty much from the beginning with "What is a database" and move to more advanced topics.
From the perspective of the database user, the backend is generally irrelevant if they understand some basic concepts.
First and most important concept for the non-technical user is GIGO (Garbage in Garbage out). Bad data is useless data. Check everything you enter into a database for correctness. You really don't want the customer's product to be mailed to San Diego, VA instead of CA.
Then next most important thing is to really understand your user interface and how it works. I've spent a lot of time fixing up junk because users didn't know what they were supposed to put in fields in databases (it would have helped if the developers had not allowed non-email type data to be entered into the email field, but you can't send an email to 757-111-6789). It is never a good idea to put the wrong kind of data into a field because you don't have another place to put it. As a user, you may have no idea what the database is going to use that data for and wrong data can completely stop a process or break something really important. If you don't know what to put in a field, then ask. Don't put junk into a field just because it is required. (Hint, it is required for a reason, that usually means this is data critical to the operation of the database, do not fake this information.)
Now if this person is doing reporting, then the critical concepts become understanding boolean algebra and a very strong undertanding of joins. If you have these two concepts down pat, you have 80-90% of what you need to query a database.
The specifics of the database supported also become important. You need to understand what is stored in what tables (or what views to use) and how they relate to each other. Coming into a new job, I would sit down with the developers if possible and get an overview of the design and whatI would need to know to get the data. I would review existing report queries to see how the data is currently being retrieved and use that to ask questions if I don't understand what the person did. Even a database expert will need to spend some time doing this when faced with a new database, so there is no reason to be shy in asking these questions when you are new.
Final thing is to learn how to report a problem to the developers. Problems that are not reported don't get fixed! Problems that are not reproducable because the user didn't provide screen shots and a context for what she was doing when the error occurred, don't get fixed either. New data fields that are needed as business requirements change, don't get added to the database until the developers know about them (Please ask for a Notes field if you need it instead of entering junk data into a field like email that you personally are not using for instance). New business requirements often require a lot of work in the backend to change how things work, it isn't as simple as adding a field on a form. Please be aware of that too when you make requests.
I learned from Robert Vieira's Professional SQL Server 2000 Programming -- well written and comprehensive. I am pretty sure the 2005 version is very similar, just updated. Despite the 'professional' label, I found it a great intro (I had practically no database experience at the time).
Also I second Erikk's comment. Download SQL Express and PLAY!

Auto Generate Database Diagram MySQL [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Closed 8 years ago.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Improve this question
I'm tired of opening Dia and creating a database diagram at the beginning of every project. Is there a tool out there that will let me select specific tables and then create a database diagram for me based on a MySQL database? Preferably it would allow me to edit the diagram afterward since none of the foreign keys are set...
Here is what I am picturing diagram-wise (please excuse the horrible data design, I didn't design it. Let's focus on the diagram concept and not on the actual data it represents for this example ;) ):
see full size diagram
Try MySQL Workbench, formerly DBDesigner 4:
http://dev.mysql.com/workbench/
This has a "Reverse Engineer Database" mode:
Database -> Reverse Engineer
I've recently started using https://github.com/schemaspy/schemaspy . It strikes me as having a good balance between usability and simplicity. (GraphViz now optional)
On a Mac, SQLEditor will do what you want.
This http://code.google.com/p/database-diagram/ will reverse engineer your database. Just do an export 'structure only' then paste the SQL into the tool.
Try MySQL Maestro.
Works great for me.
I believe DB Designer does something like that. And I think they even have a free version.
edit
Never mind. Michael's link is much better.
MySQL Workbench worked like a charm.
I just backed up database structure to SQL script and used it in "Create EER Model From SQL Script" of MWB 5.2.37 for Windows.
In MySql Workbench (6.0) its possible generate one diagram based on tables created.
For that you should access to the tools bar, press Model and forward Create Diagram from Catalog Objects and done!
Visual Paradigm for UML 9.0
It's awesome I used to work with mysql bench but for big databases (something like more than 300 tables) won't work very well but visual paradigm reverse database works so much better
phpMyAdmin has what you are looking for (for many years now):
It takes a small bit of configuration, but gives you additional benefits too:
http://www.phpmyadmin.net/documentation/#pmadb
Try out Vertabelo!
It's an online database modeler that supports reverse enginnering.
Just create free of charge Vertabelo account, import an existing database into Vertabelo and voila - your database is in Vertabelo!
It supports following databases:
PostgreSQL,
MySQL,
Oracle,
IBM DB2,
HSQLDB,
MS SQL Server.
Try SchemaBank. They support reverse engineering too.
The "Reverse Engineer Database" mode in Workbench is only part of the paid version, not the free one.
Here is a tool that generates relational diagrams from MySQL (on Windows at the moment).
I have used it on a database with 400 tables.
If the diagram is too big for a single diagram, it gets broken down into smaller ones. So you will probably end up with multiple diagrams and you can navigate between them by right clicking. It is all explained in the link below. The tool is free (as in free beer), the author uses it himself on consulting assignments, and lets other people use it.
http://www.scmlite.com/Quick%20overview