I would make three tables:
Users
Types
Users_Types
The third table would be an auxiliary table in which you can relate the users to the types, in this way in a single query you could find all the users, their names, of the type that they are and more data that you need so much of the table users as of the table types (see Query 1 below).
I leave you this basic design. Then you can create the indexes, the primary keys, control the records that will be unique, etc. It's just to show how it would work.
SQL Fiddle
MySQL 5.6 Schema Setup :
CREATE TABLE usuario
('usuario_id' int, 'usuario_nom' varchar(70), 'usuario_ape' varchar(70))
;
CREATE TABLE tipo
('tipo_id' int, 'tipo_nom' varchar(70));
CREATE TABLE usuario_tipo
('usuario_id' int, 'tipo_id' int);
INSERT INTO usuario ('usuario_id', 'usuario_nom')
VALUES
(1,"Pedro"),
(2,"Santiago"),
(3,"Juan"),
(4,"Andrés");
INSERT INTO tipo
('tipo_id', 'tipo_nom')
VALUES
(1, "Profesor"),
(2, "Alumno"),
(3, "Apoderado");
INSERT INTO usuario_tipo
('usuario_id', 'tipo_id')
VALUES
(1, 2),
(3, 1),
(2, 2),
(4, 3);
Query 1 :
SELECT u.usuario_nom, t.tipo_nom
FROM usuario u
LEFT JOIN usuario_tipo ut
ON u.usuario_id = ut.usuario_id
LEFT JOIN tipo t
ON t.tipo_id = ut.tipo_id
Results :
| usuario_nom | tipo_nom |
|-------------|-----------|
| Juan | Profesor |
| Pedro | Alumno |
| Santiago | Alumno |
| Andrés | Apoderado |