You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Contributors.md
+9-25Lines changed: 9 additions & 25 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,41 +2,25 @@
2
2
3
3
Below is a list of features and improvements to which you can contribute. If you have any additional ideas, please raise an issue or implement them as well!
4
4
5
-
- Exporting executable SQL query with every modification to your schema
6
-
- After modifying/editing the database schemas, users should be able to generate executable queries isolated from their database which decreases security concerns. Users should be able to append all the query changes at the end of the new file and save this in their local machines. The codebase for query generation is in place, however not yet implemented into the current state management and front-end rendering.
7
-
- Logging modeling
8
-
- After connnection to the database is made the user should be able to view, modify and save the current log settings. This will assist database administrators in keeping efficient log setup in mind during the early stages of DB modeling. The codebase is in place however not yet implemented into the current state management and front-end rendering.
9
-
- Add ability to log out from application, as currently log-in status will persist until app close
10
-
- Save button
11
-
- Allow the user to save ER diagrams into projects that can be retrieved and reloaded for future use.
12
-
- Undo / Redo buttons
13
-
- Allow the user to undo or redo changes made.
14
-
- History
15
-
- Display history of the schema state after each change.
16
5
- Delete Table
17
6
- Add a command to delete a table from the canvas, making sure to implement checks to maintain data integrity
18
-
- Investigate React Flow additional functionality (there are tons!)
19
-
- Take advantage of React Flow for a more dynamic interaction of the ER diagram.
20
-
- Refactoring TypeScript
21
-
- There are some components that are not fully typed in TypeScript.
22
-
- Testing
23
-
- Implementation of testing suite
24
7
- Logging needs a default settings list and direct reimport into live database.
25
8
- The SQL code to import has been placed into the DB_Schemas folder along with SQL Schema dumps. Also, log setting functionality is currently limited to Postgres databases and the code needs to be expanded to query and display log setting info from MySQL databases.
26
-
- Security setting models need to be put in place for database tables as well as log files.
27
9
- Db-schemas
28
10
- The schemas are saved under db_schemas and is saved in the server. Have a way to delete the schemas on the server from the front end. It would also be convenient to add these schemas to a list of existing schemas and be able to pull these schemas to display for the user to avoid having to make a new connection to the same database multiple times.
29
11
- Expand compatibility with other SQL database such as Oracle SQL, Microsoft SQL, IBM Db2, etc.
30
12
- Add additional themes and graphical options to canvas and tables
31
-
- Clean up unused dependencies from pre-3.0
13
+
- Clean up unused dependencies from pre-4.0
32
14
- Connecting to PostgreSQL database
33
15
- When connecting to PostgreSQL to grab the data from the database, it takes a really long time to load (approximately 2 minutes); further investigate pg_dump alternatives for faster loading.
16
+
- Integration and End-to-End testing for the codebase.
17
+
- Live query feedback so users can see what their changes to the canvas look like as queries.
34
18
35
19
Known bugs/issues
36
20
37
-
- Table connection does not automatically render after a foreign key is added and the row data is saved. Currently, there is a popup message instructing the user to perform additional steps as a workaround.
38
-
-Generate a cleaner initial table position that takes into account the dimensions of the generated tables.
39
-
-Generate handle positions at primary key and foreign key row that the connection references.
40
-
-Create logic for only primary keys (rows) to be a target for foreign keys.
41
-
- The PrimaryKeyName in the References array within the database schema object is incorrect. It is pointing to the ReferencesPropertyName causing connection label to be incorrect. Review and update the SQL parser to correct this issue.
42
-
- One part of the main page updates dark/light theme visibly later than the rest upon toggle
21
+
- Table connection (handle) does not automatically render after a foreign key is added and the column data is saved.
22
+
-In production, remote postgres database connections do not work. We suspect this is due to container environment (nodeJS) not having access to pg_dump command.
23
+
-In development, WSL/Ubuntu users may have trouble running pg_dump due to version mismatch. Run `sudo apt-get --purge remove postgresql` to clear configuration files and zombie directories before installing postgresql fresh.
24
+
-Undo function will not regress the state of the canvas to the point where it is empty. Whether this is a design choice or an issue is up to you.
<h1align="center">Visualize, modify, and build your database with dbSpy!</h1>
17
-
<p>dbSpy is an open-source data modeling tool to facilitate relational database development.</p>
17
+
<palign="center">An open-source data modeling tool to facilitate relational database development</p>
18
+
<palign="center">dbSpy是一个促进关系数据库开发的开源数据建模工具。</p>
18
19
19
-
<!-- dbSpy is an open-source visualization tool to facilitate relational database model development using entity relationship diagrams and homogeneous database migration -->
20
+
### Use Cases
21
+
22
+
- Connecting to an existing remote PostgreSQL and MySQL database
23
+
- Renders an ER diagram of the existing database and provides an interface for users to both modify existing tables and create new tables. A log of changes is stored, and at any point, the user can execute a transaction containing the changes, such that they are reflected in the existing database.
24
+
- Uploading your database's SQL file
25
+
- Renders an ER diagram for the provided SQL file (db dump) and provides an interface for a user to both modify existing tables and create new tables. Changes are converted into the corresponding queries, which the user can view and execute on their own database outside of dbSpy.
26
+
- Seamlessly visualize relational databases
27
+
- After connecting database tables with one another, users are able to render the relationship connections of individual tables by clicking on the tables.
28
+
- Creating a database + ER diagram from scratch
29
+
- Provides a canvas for users to create a database by using ER diagrams, thus creating a blueprint for engineering database structures.
20
30
21
31
---
22
32
23
33
### Key Features
24
34
25
-
1.**Database Connection:** Connect to a SQL database
26
-
27
-
2.**Compatible SQL Database:** Current dbSpy is compatible with PostgreSQL and MySQL database
28
-
29
-
3.**Database File Upload:** Upload a database's SQL file
35
+
1.**Database Uploads:** Connect to remote SQL database or upload local SQL files
30
36
31
-
4.**ER Diagrams:** Visualize the entity relationship diagram of a database
37
+
2.**ER Diagram Visuals:** Visualize the entity relationship diagram of a database with dynamic handle placement
32
38
33
-
5.**Visualizing Individual Table Connections** Relationships of individual tables are now easily identified when clicking on a table.
39
+
3.**Table Relationship Visuals** Relationships of individual tables are easily identified when clicking on a table.
34
40
35
-
6.**Schema Modification:**Modify a database's schema
41
+
4.**Schema Modification:**Easily modify a database's schema through a simple UI
36
42
37
-
7.**Database Building:** Create a new database from scratch using entity relationship diagrams
43
+
5.**Guided Database Building:** Create a new database from scratch using entity relationship diagrams to ensure the integrity of the database
38
44
39
-
8.**Screenshot:**Take a screenshot of the canvas with all your tables
45
+
6.**Database Undo/Redo:**Provides a history of edits for easier backtracking
40
46
41
-
9.**Dark Mode** Additional visual setting to provide a more comfortable viewing experience in low-light environements
8.**User Sessions:** Sign up/Log in securely with either Google OAuth or JWTs/Bcrypt
45
50
46
-
1.**SQL Query Generator:**Generate an executable SQL query with every modification to your schema
51
+
9.**Save/Load:**Store and reload recent database sessions through your user account
47
52
48
-
2.**Time Travel:** Provides a history of edits for easier backtracking
49
-
50
-
3.**Exporting Queries:** Allows updated changes of queries to be saved as a SQL file for client imports to their database
51
-
52
-
4.**Log Modeling:** Provides a tool for admins to pull, view, modify, and export log settings from an existing database
53
-
54
-
5.**Database Integrity Assurance** Database Logic Check is performed as the client edits the database to ensure the integrity of the database
55
-
56
-
---
57
-
58
-
### Use Cases
59
-
60
-
- Connecting to an existing database
61
-
- Renders an ER diagram of the existing database and provides an interface for users to both modify existing tables and create new tables. A log of changes is stored, and at any point, the user can execute a transaction containing the changes, such that they are reflected in the existing database.
62
-
- Uploading your database's SQL file
63
-
- Renders an ER diagram for the provided SQL file (db dump) and provides an interface for a user to both modify existing tables and create new tables. Changes are converted into the corresponding queries, which the user can view and execute on their own database outside of dbSpy.
64
-
- Seamlessly visualize relational database
65
-
- After connecting database tables with one another, users are able to render the relationship connections of individual tables by clicking on the tables.
66
-
- Starting an ER diagram from scratch
67
-
- Provides a canvas for users to create a database by using ER diagrams, thus creating a blueprint for engineering database structures.
53
+
10.**Dark Mode:** Visual settings to provide a more comfortable viewing experience in low-light environements
68
54
55
+
<imgsrc="images/Darkmode.png">
69
56
---
70
57
71
58
### Getting started
72
-
59
+
You will need your own mySQL and redis databases for backend functions, and Google Cloud project for OAuth.
73
60
- Fork and clone this repo
61
+
- Add a db_schemas folder in server directory
74
62
- Add a .env file to the root directory
75
63
- Go to the Google Cloud Platform Console
76
-
- Set up OAuth 2.0 credentials as laid out in <ahref="https://support.google.com/cloud/answer/6158849?hl=en">here</a>
64
+
- Set up OAuth 2.0 credentials as laid out in <ahref="https://support.google.com/cloud/answer/6158849?hl=en">here</a>. Make sure
65
+
your authorized redirect URI in the credentials you create matches the GOOGLE_AUTH_CALLBACK variable below.
77
66
- Populate the .env file with the newly created code below:
1. Click on the "Connect Database" button under the Action section on the left side of the page. This will open a sidebar on the right side of the page.
129
126
2. Select the database type from the dropdown.
130
127
3. Input your database URI information OR database connection credentials and click on "Connect".
131
128
4. Once the connection to your database is established, the canvas will render and generate the tables and their relationships.
1. Locate and click on the "Upload SQL File" button under the Action section on the left side of the page. This will open a dialog box for you to select the SQL file you wish to upload.
138
135
2. Once the file uploads, the canvas will render and generate the tables and their relationships.
139
136
140
-
Starting an ER diagram from scratch
137
+
### Starting an ER diagram from scratch
141
138
142
139
1. Locate and click on the "Build Database" button under the Action section on the left side of the page. This will render the canvas for you to create your database schema.
143
140
2. Click on "Add Table" to name the first table and start building your database.
144
141
145
-
Adding a new row to a table
142
+
## Adding column(s) to a table
146
143
147
-
1. To add a new row in a table, click on the add icon on the top right of the table node. This will render a new row in the table in edit mode.
0 commit comments