code: func NewTable(name string, columns ...NonAliasColumn) *Table {
  	if !validIdentifierName(name) {
  		panic("Invalid table name")
  	}
  
  	t := &Table{
  		name:         name,
  		columns:      columns,
  		columnLookup: make(map[string]NonAliasColumn),
  	}
  	for _, c := range columns {
  		err := c.setTableName(name)
  		if err != nil {
  			panic(err)
  		}
  		t.columnLookup[c.Name()] = c
  	}
  
  	if len(columns) == 0 {
  		panic(fmt.Sprintf("Table %s has no columns", name))
  	}
  
  	return t
  }
docs: // Defines a physical table in the database that is both readable and writable.
  // This function will panic if name is not valid