# Schema In ZipponDB, you use structures, or structs for short, and not tables to organize how your data is stored and manipulated. A struct has a name like `User` and members like `name` and `age`. ## Create a Schema ZipponDB use a seperate file to declare all structs to use in the database. Here an example of a file: ``` User ( name: str, email: str, best_friend: User, ) ``` Note that `best_friend` is a link to another `User`. Here is a more advanced example with multiple structs: ``` User ( name: str, email: str, friends: []User, posts: []Post, comments: []Comment, ) Post ( title: str, image: str, at: date, like_by: []User, comments: []Comment, ) Comment ( content: str, at: date, like_by: []User, ) ``` ***Note: `[]` before the type means an array of this type.*** ## Migration to a new schema - Not yet implemented In the future, you will be able to update the schema, such as adding a new member to a struct, and update the database. For the moment, you can't change the schema once it's initialized. ## Commands `schema init path/to/schema.file`: Init the database using a schema file. `schema describe`: Print the schema use by the currently selected database.